我目前正在为一个 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/