为什么此警报包含未定义?
这是我的代码,并将其从jsTree复选框树形列表获取选项:为什么此警报包含未定义?
var level1, r = [];
for (i = 0, j = data.selected.length; i < j; i++) {
r[0] = data.instance.get_node(data.selected[i]).text.trim();
r[1] = data.instance.get_node(data.selected[i]).parents.length;
if(r[1] == 1) {
level1 += r[0] + ", ";
alert(level1);
}
}
以上的alert
包含undefined
从复选框正确的选择一起。任何想法为什么我在输出中未定义?
问题是level1
是不确定的,当你第一次尝试在这里使用它:
level1 += r[0]+", ";
这是一样的:
level1 = level1 + r[0]+", ";
问题是level1
通过不确定的第一次迭代等该文本包含undefined
并将其连接成一个字符串,因为它被强制连接。它初始化为空字符串:
var level1 = "";
这样,当你访问它,它不会是不确定的。
按照Aliens先生的帖子在上面......我简直不敢相信我错过了这个..... –
@Homer_J你下一个问题是如何不留尾随逗号。 ;) – epascarello
@epascarello我以为同样的事xD –
这
var level1, r = [];
for (i = 0, j = data.selected.length; i < j; i++) {
r[0] = data.instance.get_node(data.selected[i]).text.trim();
r[1] = data.instance.get_node(data.selected[i]).parents.length;
if(r[1] == 1){
level1 += r[0]+", ";
alert(level1);
}
}
应该
var level1 = '';
//Or leve1 = []; If you really need it as an array.
var r = [];
for (i = 0, j = data.selected.length; i < j; i++) {
r[0] = data.instance.get_node(data.selected[i]).text.trim();
r[1] = data.instance.get_node(data.selected[i]).parents.length;
if(r[1] === 1){
// level1[0] += r[0]+", "; If array.
level1 += r[0]+", ";
alert(level1);
// alert(level1[0]); If array.
}
}
的level1
未定义,因为level1, r = []
使得r === []
和level1 === undefined
。
所以我建议你显式声明两个变量,如上面的代码块所示。
我也比较固定运营商,see here why
请发表您的HTML代码,以及为更好地理解。 –
'var level1; var r = [];''level1 = r [0] +“,”;'试试这个 –
您的level1 var是未定义的..将空字符串赋值给它以便您可以连接 –