为什么JavaScript push()方法没有';是否在数组元素之间添加逗号?

为什么JavaScript push()方法没有';是否在数组元素之间添加逗号?,javascript,jquery,arrays,Javascript,Jquery,Arrays,我尝试使用jqueryeach()和JavaScript push()方法动态添加数组元素。当我使用alert()添加元素后显示数组时,每个元素之间都有一个逗号,但当我使用jQuery html()方法在网页上显示数组元素时,数组元素之间没有逗号,并且数组元素显示为一个长字符串。我不明白为什么会这样?那么,在页面上显示每个数组元素时,如何在它们之间添加逗号(最后一个数组元素后面的逗号除外) $(文档).ready(函数(){ var div_数组=新数组(); $(“#btn”)。单击(函数(

我尝试使用jqueryeach()和JavaScript push()方法动态添加数组元素。当我使用alert()添加元素后显示数组时,每个元素之间都有一个逗号,但当我使用jQuery html()方法在网页上显示数组元素时,数组元素之间没有逗号,并且数组元素显示为一个长字符串。我不明白为什么会这样?那么,在页面上显示每个数组元素时,如何在它们之间添加逗号(最后一个数组元素后面的逗号除外)

$(文档).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会被删除,也不必担心问题不完整。