Javascript 为什么此警报包含未定义的内容?
这是我的代码,它从jsTree复选框树列表中获取选项:Javascript 为什么此警报包含未定义的内容?,javascript,jquery,jstree,Javascript,Jquery,Jstree,这是我的代码,它从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]
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级别1,r=[];
对于(i=0,j=data.selected.length;i
上面的
警报
包含未定义
以及复选框中的正确选项。知道我为什么在输出中没有定义吗?问题是当您第一次尝试在此处使用时,level1
没有定义:
level1 += r[0]+", ";
这与:
level1 = level1 + r[0]+", ";
问题是level1
在第一次迭代中未定义,因此文本包含undefined
,并将其串联在一起,将“undefined”
强制连接为字符串。将其初始化为空字符串:
var level1 = "";
这样,当您访问它时,它将不会被取消定义。此
var级别1,r=[];
对于(i=0,j=data.selected.length;i }
请同时发布您的HTML代码,以便更好地理解。var level1;var r=[]代码>和level1=r[0]+“,”代码>尝试此操作您的level1变量未定义。。将空白字符串指定给它,以便可以连接到。。是否要将空白数组分配给两个变量?那样的话,它应该 类似于var a=b=someval,以便将相同的val分配给两个var。。确保你首先定义了两个变量,否则第二个变量将是globalProps给Alien先生-我有点尴尬<代码>风险等级1=''
DOH!!!抱歉,谢谢,阿奇努布,谢谢。字符串确实是一个问题,但是,正如它所发生的那样,上面解决了我在其他地方面临的另一个问题!太棒了@Homer_J“是一个数组,因为您将其声明为…”-您在哪里看到的?它们显式连接一个字符串,因此它可能是一个string@AndrewLi啊,你说得对。我错误地认为,var-some,some1=[]
使some和some1==[]同时存在。但它实际上使一些===未定义,而另一些==[]。我更新了答案以适应更正。谢谢@荷马和你下一个问题是如何不在后面加逗号@我也这么想xD