这是一个调用SELECT元素值的函数。但我面临一个错误。 代码在这里。
function get_s_val(){
var foo = all_categories_1;
var ov1 = "";
for(m=0;m<=foo.length;m++){
ov1 += foo[m].value+',';
}
console.log(ov1);
var tme=setTimeout("get_s_val()", 1000);
}
get_s_val();
它显示错误,如"Uncaught TypeError: Cannot read property 'value' of undefined"
但是当我做一些小改变时,它会起作用..比如
function get_s_val(){
var foo = all_categories_1;
var ov1 = "";
//for(m=0;m<=foo.length;m++){
ov1 += foo[0].value+',';
//}
console.log(ov1);
var tme=setTimeout("get_s_val()", 1000);
}
get_s_val();
我不知道编写代码我错了。
答案 0 :(得分:2)
修改循环条件以在迭代器小于数组的长度时运行,或者当你在索引{{到达不存在的元素时'获得undefined
1}}:
foo.length
...并且总是使用for(var m=0;m<foo.length;m++){
ov1 += foo[m].value+',';
}
关键字声明变量,否则会发生不好的事情,JSLint会抱怨它(这是正确的,但这是另一个主题)。
答案 1 :(得分:1)
function get_s_val(){
var foo = all_categories_1;
var ov1 = "";
for(var m = 0; m < foo.length; m++){ // use var, and only loop from e.g.
// 0 to 2 when the length is 3, so <,
// not <=
ov1 += foo[m].value+',';
}
console.log(ov1);
setTimeout(get_s_val, 1000); // don't use a string, just pass the function.
// Plus, the variable is nowhere accessible so
// you can drop storing it
}
get_s_val();
无论如何,如果你只想将数组的元素加入到以,
作为分隔符的字符串中,为什么不这样做:
console.log(foo.join());
答案 2 :(得分:0)
在for
循环的顶部,m<=foo.length;
应该是m<foo.length;
。