我尝试使用innerHTML
设置小于号码和小于或等于的符号,然后将编码后的文本取出,而不是解码后的符号。
这适用于<
,但不适用于≤
。这有什么原因吗?
var lt = '<';
var le = '≤';
var div_lt = document.createElement('div');
div_lt.setAttribute('original_value', lt);
div_lt.innerHTML = lt;
var div_le = document.createElement('div');
div_le.setAttribute('original_value', le);
div_le.innerHTML = le;
console.log([div_lt.innerHTML, div_lt.innerText, div_lt.getAttribute('original_value')]);
// gives [ "<", "<", "<" ], as I expected
console.log([div_le.innerHTML, div_le.innerText, div_le.getAttribute('original_value')]);
// gives [ "≤", "≤", "≤" ], but the first value should be "≤"
JSFiddle:https://jsfiddle.net/54m6c8sk/
答案 0 :(得分:2)
在HTML中<
表示“标记开始”,≤
表示“≤”。
如果您想在HTML中表达<
,那么您经常必须使用实体。如果您想表达≤
,永远不会使用实体。
通过innerHTML
将DOM转换为HTML不会将≤
转换为≤
,因为它永远不会有用。
答案 1 :(得分:-2)
这是一个有趣的...但已经回答:How do I prevent HTML encoding of '&' characters while copying content from a div to the title of the page?
tldr:使用textContent而不是innerHTML - innerHTML实际上不是DOM规范的一部分