Javascript 为什么从数据属性获取值会影响文本
我正在努力解决一些语法问题,主要是为什么Javascript 为什么从数据属性获取值会影响文本,javascript,Javascript,我正在努力解决一些语法问题,主要是为什么数据属性(HTML5)会影响文本 请考虑这个例子,它做了预期的 <div id="s"></div> <script> var ele = document.getElementById("s"); var txt = "this is it \n and done"; ele.innerText = txt; </script> 注意,我们现在使用的是datatxt的data属性。问题是,这
数据属性
(HTML5)会影响文本
请考虑这个例子,它做了预期的
<div id="s"></div>
<script>
var ele = document.getElementById("s");
var txt = "this is it \n and done";
ele.innerText = txt;
</script>
注意,我们现在使用的是datatxt
的data属性。问题是,这会逐字呈现文本,这意味着我看到了一行:this is it\n and done
我甚至不能使用replace(ele.getAttribute(“data txt”).replace('\n','blah');
)这一事实表明,尽管我看到了,但计算机正在读取不同的内容(可能是charcode值或类似值)
为什么会发生这种情况?我该如何预防
编辑
我已经看到了,但这还不够,因为我需要字符串存在于数据txt中,并以
“this is”+字符串的形式连接。fromCharCode(13)+“
对HTML5无效
ele = document.getElementById("t");
txt = ele.getAttribute("data-txt").replace(/\\n/g,'<br>');
ele.innerHTML = txt;
***
您将HTML与JavaScript混为一谈
\n
是一个JavaScript字符。数据-*
属性是HTML。要在HTML中插入换行符,应使用HTML实体和#10;
(换行符)或和#13;
(回车符)或它们的组合
HTML不理解\n
,\r
等等
还注意到
<div>This is a line \n Another one</div>
这是一行\n另一行
这不会插入换行符,但下面的代码将:
<div>This is a line Another one</div>
这是一行
;另一行
查看完整的列表,在第一种情况下,呈现引擎似乎采用了
\n
并将其转换为
,但是由于在第二个示例中已经绘制了页面,因此使用了文本。\n
第二种情况是文本斜杠,而不是新行。相关问题:那么什么这是您真正想要实现的吗?是否要使用包含换行符的javascript设置标记的内部文本?如果innerText
(无论如何都是非标准的)如果不起作用,请使用innerHTML
、textContent
或document.createTextNode
。是否要从包含换行符的数据属性中读取文本?然后在该数据属性中实际包含换行符。\n
在html中与在javascript中不同(请参阅jcubics注释)./\\n/g
如果你想替换所有新行字符。你把HTML和JavaScript搞混了。
-这正是我想要的答案。非常清楚,谢谢。我的一般意见是使用
而不是CRLF字符,因为它允许css空白
属性的可预测行为。如果如果您正在使用此方法,请务必查看此方法。例如:上面的代码将被样式空白:nowrap;
<div>This is a line Another one</div>