2017-02-12 9 views
1

В настоящее время я создал кусок кода Javascript, который проверяет HTTP-ответ, и если его успешный код 200 показывает, что светофор показывает зеленый цвет, и если его не 200-й код светофора мигает красным.Пропустить новый аргумент в коде Javascript для целевого HTML5 attr

Моя текущая проблема на данный момент я хочу, чтобы иметь возможность передать Два аргументов функции инициализации, как так

requestResponses.init('/status', "ATTR"); 

Первый атрибутом является URL я хочу проверить против и второго атрибута являющийся значением HTML5 data-request атрибут, который я создал.

Моя причина для этого, так как я хочу иметь несколько светофоров на одной странице, нацеленных на разные URL одновременно, не влияя друг на друга.

Таким образом, для примера я создаю атрибут запроса данных и дать ему значение Четыре я тогда хочу, чтобы иметь возможность подключить его как так

requestResponses.init('/status', "Four"); 

и начать ориентации элементов, как показано ниже в коде , Это делает его более компактным и многоразовым.

.cp_trafficLight[data-request="Four"] 

Пожалуйста, найдите мой код и рабочий JSFiddle.

var requestResponses = { 

    greenLight: $('.cp_trafficLight_Light--greenDimmed'), 
    redLight: $('.cp_trafficLight_Light--redDimmed'), 
    greenBright: 'cp_trafficLight_Light--greenBright', 
    redBright: 'cp_trafficLight_Light--redBright', 

    settings: { 
     flashError: 400, 
     requestTime: 10000 
    }, 

    init: function (url, targAttr) { 
     requestResponses.url = url; 
     requestResponses.getResponse(requestResponses.url, targAttr); 
     setInterval(function() { 
      if (requestResponses.errorCode === true) { 
       requestResponses.redLight.toggleClass(requestResponses.redBright); 
      } 
     }, requestResponses.settings.flashError); 
    }, 

    successResponse: function (targAttr) { 
     requestResponses.errorCode = false; 
     requestResponses.redLight.removeClass(requestResponses.redBright); 
     requestResponses.greenLight.addClass(requestResponses.greenBright); 
     console.log(targAttr); 
    }, 

    errorResponse: function (targAttr) { 
     requestResponses.greenLight.removeClass(requestResponses.greenBright); 
    }, 

    getResponse: function (serverURL, targAttr) { 
     $.ajax(serverURL, { 
      success: function() { 
       requestResponses.errorCode = false; 
       requestResponses.successResponse(targAttr); 
      }, 
      error: function() { 
       requestResponses.errorCode = true; 
       requestResponses.errorResponse(targAttr); 
      }, 
      complete: function() { 
       setTimeout(function() { 
        requestResponses.getResponse(requestResponses.url); 
       }, requestResponses.settings.requestTime); 
      } 
     }); 
    }, 

    errorCode: false 
} 

requestResponses.init('/status', "TEST"); 

https://jsfiddle.net/8700h582/

Цените любую помощь!

ответ

0

Затем в вашей функции вы включаете второй параметр, разделенный запятой.

function foo(param1, param2) { 

    //Do something. 

}; 

foo("1st", "2nd"); 

EDIT я вижу сейчас в ваших инициализациях включают вторые параметры для света и в функции инициализации передать эти вторые из параметров на запрос, а затем оттуда передать его вниз к вашей ошибке и RESPONS функции. А затем верните функцию. Это может быть проведено в var.

+0

Я получаю это, но моя проблема заключается в том, что этот параметр не поддается другой функции? – Rebecca

+0

@Rebecca Я не понимаю, что вы имеете в виду. Вы имеете в виду вызов foo в рамках другой функции? – Darkrum

+0

, поэтому я хочу, чтобы этот аргумент передавался в метод «errorResponse» и «successResponse», поэтому я могу начать манипулировать dom. Каждый атрибут будет уникальным для каждого светофора. – Rebecca