为什么JavaScript push()方法没有';是否在数组元素之间添加逗号?
我尝试使用jqueryeach()和JavaScript push()方法动态添加数组元素。当我使用alert()添加元素后显示数组时,每个元素之间都有一个逗号,但当我使用jQuery html()方法在网页上显示数组元素时,数组元素之间没有逗号,并且数组元素显示为一个长字符串。我不明白为什么会这样?那么,在页面上显示每个数组元素时,如何在它们之间添加逗号(最后一个数组元素后面的逗号除外)为什么JavaScript push()方法没有';是否在数组元素之间添加逗号?,javascript,jquery,arrays,Javascript,Jquery,Arrays,我尝试使用jqueryeach()和JavaScript push()方法动态添加数组元素。当我使用alert()添加元素后显示数组时,每个元素之间都有一个逗号,但当我使用jQuery html()方法在网页上显示数组元素时,数组元素之间没有逗号,并且数组元素显示为一个长字符串。我不明白为什么会这样?那么,在页面上显示每个数组元素时,如何在它们之间添加逗号(最后一个数组元素后面的逗号除外) $(文档).ready(函数(){ var div_数组=新数组(); $(“#btn”)。单击(函数(
$(文档).ready(函数(){
var div_数组=新数组();
$(“#btn”)。单击(函数(){
$(“#wrapper.selected”)。每个(函数(){
div_array.push($(this.children(“p”).text());
});
警报(div_数组);
$(“#响应”).html(div#u数组);
});
});代码>
#包装器{
宽度:700px;
保证金:50px自动;
}
mydiv先生{
边框:1px纯红;
宽度:100px;
高度:50px;
浮动:左;
利润率:15px;
文本对齐:居中;
}
.选定{
背景色:红色;
颜色:白色;
}
第一组
第2组
第3组
第4组
第5组
使用$(“#response”).html(div#u array.join(',')代码>取而代之
var div_array=new array();
$(“#btn”)。单击(函数(){
$(“#wrapper.selected”)。每个(函数(){
div_array.push($(this.children(“p”).text());
});
警报(div_数组);
$(“#response”).html(div_array.join(',');
});代码>
#包装器{
宽度:700px;
保证金:50px自动;
}
mydiv先生{
边框:1px纯红;
宽度:100px;
高度:50px;
浮动:左;
利润率:15px;
文本对齐:居中;
}
.选定{
背景色:红色;
颜色:白色;
}
第一组
第2组
第3组
第4组
第5组
在页面上显示数组元素时,您需要将它们.join()
合并为字符串。该方法接受字符串作为参数,以分隔数组中的每对相邻元素。如果未向.join()
传递任何值,则默认值为,
,因此您可以只使用.join()
因此,您可以使用:
$("#response").html(div_array.join());
导致,
Item1,Item2,Item3
或者使用,“
作为.join()
参数,在每个元素之间放置逗号和空格:
Item1, Item2, Item3
$(文档).ready(函数(){
var div_数组=新数组();
$(“#btn”)。单击(函数(){
$(“#wrapper.selected”)。每个(函数(){
div_array.push($(this.children(“p”).text());
});
$(“#响应”).html(div#u array.join(“,”);
});
});代码>
#包装器{
宽度:700px;
保证金:50px自动;
}
mydiv先生{
边框:1px纯红;
宽度:100px;
高度:50px;
浮动:左;
利润率:15px;
文本对齐:居中;
}
.选定{
背景色:红色;
颜色:白色;
}
第一组
第2组
第3组
第4组
第5组
$(文档).ready(函数(){
var div_数组=新数组();
$(“#btn”)。单击(函数(){
$(“#wrapper.selected”)。每个(函数(){
div_array.push($(this.children(“p”).text());
});
警报(div_数组);
$(“#响应”).text(div#u数组);
});
});代码>
#包装器{
宽度:700px;
保证金:50px自动;
}
mydiv先生{
边框:1px纯红;
宽度:100px;
高度:50px;
浮动:左;
利润率:15px;
文本对齐:居中;
}
.选定{
背景色:红色;
颜色:白色;
}
第一组
第2组
第3组
第4组
第5组
警报
调用阵列上添加逗号的字符串
。jquery函数不这样做,而是将数组中的项作为文本节点追加。i、 e.数组中的每个字符串都将作为文本节点附加到响应div
如果尝试使用而不是,它将打印出您在警报中看到的数组,因为这会将元素的textContent
设置为数组(这反过来会调用toString
)
var div_array=new array();
$(“#btn”)。单击(函数(){
$(“#wrapper.selected”)。每个(函数(){
div_array.push($(this.children(“p”).text());
});
警报(div_数组);
$(“#响应”).text(div#u数组);
});代码>
#包装器{
宽度:700px;
保证金:50px自动;
}
mydiv先生{
边框:1px纯红;
宽度:100px;
高度:50px;
浮动:左;
利润率:15px;
文本对齐:居中;
}
.选定{
背景色:红色;
颜色:白色;
}
第一组
第2组
第3组
第4组
第5组
只需join()即可。默认情况下它使用逗号。yes join()执行我想要的操作。但是。。。我的问题仍然没有得到回答。为什么在alert()中使用逗号而在html()中不使用逗号?有什么想法吗?Alert将其打印为调试值,默认情况下数组的调试值之间有comas,但是数组。toString()
没有。@Akxe:“但是数组。toString()没有”嗯,在控制台中试试:[1,2,3]。toString()
请注意,我对此不是100%确定,但我觉得有必要这样说:alert()
方法调用Array.prototype.toString()
将数组显示为可读字符串,这一事实导致了您看到的行为差异。jQuery的.html
方法只是调用数组.prototype.join()
方法,使用空字符串作为连接符,但我还没有查看jQuery的源代码。为什么要删除我的JSFIDLE链接?我们可以创建在问题本身中运行的代码段。这意味着我们不必担心JSFIDLE会被删除,也不必担心问题不完整。