javascript - 未捕获的类型错误 : Cannot read property 'length' of undefined when using setInterval

标签 javascript jquery

我目前正在为一个 DYI 项目构建一个 Web 界面,但我遇到了一个我无法弄清楚的错误。希望你能帮帮我。 (顺便说一句,我是 js/jquery 的初学者)

这是我遇到问题的一段代码。

var lights_array = [20, 24, 25, 15, 28, 13, 19, 22, 21, 23, 31, 26, 27, 14, 3, 9, 7, 5, 8, 4, 6, 17, 18, 10, 12, 11, 16, 29, 30]; 

function pull_light_status (lights_array){
    $.each(lights_array,function(myindex, myvalue){
        $.post( "resources/php/individual_json.php", { veraip: "10.20.174.10", device_id: + myvalue})
            .done(function (json) {
            var vera_obj = JSON.parse(json);
            var light_state = vera_obj["Device_Num_"+myvalue].states[1].value;
            if (light_state === "1") {
                $("#light"+myvalue).attr("src","resources/img/on_toggle.png");
            } else {
                $("#light"+myvalue).attr("src","resources/img/off_toggle.png");
            }
            console.log("Checkpoint - Loading light status");
        })  
    })
}

pull_light_status(lights_array);
setInterval(pull_light_status,10000);   //this is what is giving me issues

好的,这是我遇到的问题。没有行 setInterval(pull_light_status,10000); 它工作正常,当页面加载时,它加载我的灯的状态并相应地设置图像。

只要我添加 setInterval(pull_light_status,10000); 行,状态灯就会每 10 秒刷新一次(以防我手动将灯打开和关闭),我没有得到检查点每 10 秒发送一次消息,相反,每 10 秒我收到一个错误

我得到的错误是这样的:

Uncaught TypeError: Cannot read property 'length' of undefined n.extend.each @ jquery-2.1.4.min.js:2 pull_light_status @ script2.js:66

PD。 scrip2.js 的第 66 行是这样的 $.each(lights_array,function(myindex, myvalue){

希望您能阐明问题所在以及解决方法。

提前致谢

最佳答案

当您将该函数用作 setInterval 的回调时,您不会将数组作为参数发送,因此函数中尝试访问该数组的代码将失败。

您可以在代码周围放置一个函数包装器,以便您可以使用参数调用该函数:

setInterval(function(){
  pull_light_status(lights_array);
},10000);

关于javascript - 未捕获的类型错误 : Cannot read property 'length' of undefined when using setInterval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32162977/

相关文章:

Javascript:返回字符串的两部分......

javascript - 如何使用开发人员工具打印具有嵌套属性的 JavaScript 对象,而嵌套属性不会指向错误的引用

javascript - AngularJS - $routeProvider 和 data-ng-view 的问题

javascript - Javascript onclick 错误

jquery - 调整 iframe 内容的 jQuery 颜色框大小?

jquery 用 html 替换匹配的文本

javascript - Highcharts 堆叠柱形 strip 线

javascript - 查看元素的所有 dom 事件

javascript - 数组并显示为未定义

javascript - Nodejs/puppeteer - 导航超时错误