为什么此警报包含未定义?
Why does this alert contain undefined?
这是我的代码,它从 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
以及复选框中的正确选择。知道为什么我在输出中得到 undefined 吗?
问题是 level1
在您首次尝试在此处使用时未定义:
level1 += r[0]+", ";
这等同于:
level1 = level1 + r[0]+", ";
问题是 level1
未定义第一次迭代,因此文本包含 undefined
并连接它时将 "undefined"
连接为一个字符串,因为它是强制的。将其初始化为空字符串:
var level1 = "";
这样访问时就不会未定义了。
这个
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
这是我的代码,它从 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
以及复选框中的正确选择。知道为什么我在输出中得到 undefined 吗?
问题是 level1
在您首次尝试在此处使用时未定义:
level1 += r[0]+", ";
这等同于:
level1 = level1 + r[0]+", ";
问题是 level1
未定义第一次迭代,因此文本包含 undefined
并连接它时将 "undefined"
连接为一个字符串,因为它是强制的。将其初始化为空字符串:
var level1 = "";
这样访问时就不会未定义了。
这个
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