1

我目前已经创建了一段 Javascript 代码来检查 http 响应,如果它是成功的 200 代码,交通灯显示绿色,如果不是 200 代码,交通灯闪烁红色。

我目前的问题是我希望能够像这样将两个参数传递给初始化函数

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

第一个属性是我要测试的 URL,第二个属性是我创建的 HTML5数据请求属性的值。

我这样做的原因是我希望在同一页面上有多个交通信号灯同时针对不同的 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/

感谢任何帮助!

4

1 回答 1

0

然后在您的函数中包含用逗号分隔的第二个参数。

function foo(param1, param2) {

    //Do something.

};

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

编辑 我现在在您的 init 中看到包含灯光的第二个参数,并且在 init 函数中将第二个参数传递给您的请求,然后从那里将其传递给您的错误和响应函数。然后返回函数。这可以保存在一个变量中。

于 2017-02-12T18:47:05.197 回答