Javascript html与文本

Javascript html与文本,javascript,jquery,Javascript,Jquery,我有以下资料: var myArray = []; myArray.push("one", " two"); document.getElementById("write").innerHTML = myArray; 其中输出:1,2 我想用jQuery试试: $("#write").html(myArray); 我得到:一两个 它省略了逗号 为什么? 我已经看到.html()应该在.innerHTML()上使用,并且它的工作原理是一样的,但是如果jQuery版本遗漏了一些小细节,那又有什么

我有以下资料:

var myArray = [];
myArray.push("one", " two");
document.getElementById("write").innerHTML = myArray;
其中输出:
1,2

我想用jQuery试试:

$("#write").html(myArray);
我得到:
一两个

它省略了逗号

为什么?

我已经看到
.html()
应该在
.innerHTML()
上使用,并且它的工作原理是一样的,但是如果jQuery版本遗漏了一些小细节,那又有什么意义呢

这表示“但是,
.text()
函数将更改指定元素的(文本)值,但保留html结构。”


这就是为什么在这种特殊情况下,
.text()
似乎比
.html()
更有效的原因吗?因为。
text()
保留了结构?

JQuery的
html
函数只接受作为它的参数,并且在尝试传入数组时为我抛出了一个错误

如果您需要保留逗号,并且有意使用JQuery(或者需要对数组的输出方式进行更精确的控制),则最好先使用
.join()
,将数组转换为字符串,即:

$(“#write”).html(myArray.join(“,”)
JQuery
.html()
method inturn调用
.innerHTML()
JavaScript函数。因此,除IE外,大多数情况下,所有浏览器的行为都应该相同

检查从中提取的此信息

此方法使用浏览器的innerHTML属性。某些浏览器可能不会返回与原始文档中的HTML源完全相同的HTML。例如,如果属性值仅包含字母数字字符,Internet Explorer有时会在属性值周围去掉引号。


查看jquery站点的
.html()
文档,了解更多相关信息。

首先,如果您希望以自己希望的方式将数据转换为字符串,请不要猜测或依赖某些库如何将其转换为字符串

第二:
.text()
用于普通字符串
.html()
用于html字符串

现在回答为什么:


无论是
.innerHtml
还是
.text
只要调用
toString()
,就可以了<代码>['one','two'].toString()='one,two',
.html
检查传递给它的任何内容。如果它是数组,它将遍历它,调用
toString
并计算结果。您可以在这里看到处理:

查看jQuery源代码后,
.html()
方法将使用
innerHTML
方法,前提是传递的值是字符串,并且其有效的html(由一些其他内部方法验证)。否则,该方法将调用
append()
方法,该方法将数组视为要追加的元素序列或html字符串,这就是为什么您看不到comas

使用字符串(有效html)
html()
使用:

elem.innerHTML = value;
如果引发异常或您传递了数组:

this.empty().append( value );
它将在数组中循环并附加元素


您只想将
.html()
与应视为html有效代码的安全代码一起使用。否则,请使用
text()
,它将严格地将传递的值视为文本,即使它是有效的html。

jQuery.html()将字符串视为html,jQuery.text()将内容视为文本。可能会帮助您理解
.html
.innerHTML
之间的区别,并将解释
.html
之间的区别
将解决此问题。这显示了
.html
.text
.val
之间的差异。但是
.innerHTML=myArray
仍然有逗号。顺便问一下,它是如何回答这个问题的?更新了答案以包含更多JQuery特定信息谢谢@Stumblor!我真的很感激。