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!我真的很感激。