似乎在通过 innerHTML() 函数输出内容时,JavaScript 会自动将某些特殊字符转换为 HTML 实体。这是一个问题,因为我需要能够在不转换为 gt 的情况下输出 < 和 >;和 lt;
能否阻止、逆转或逃避这种自动转换?到目前为止,无论我做什么,< 和 > 总是自动编码为 HTML 实体。
示例代码:
function DisplayQueries() {
var IDs = ['AllOpenedINC','AllOpenedCRQ','AllClosedINC','AllClosedCRQ','SameDayINC','SameDayCRQ','NotSameDayINC','NotSameDayCRQ',
'StillOpenINC','StillOpenCRQ','OpenOldINC','OpenOldCRQ','OtherQueuesINC','OtherQueuesCRQ']
for (var i = 0; i < IDs.length; i++) {
if (eval(IDs[i]))
document.getElementById(IDs[i]).innerHTML = eval(IDs[i]);
}
}
示例查询变量:
AllOpenedINC = "('Company*+' = \"test\" OR 'Summary*' = \"%test%\") AND ('Submit Date' >= \"" + theDate +
" 12:00:00 AM\" AND 'Submit Date' <= \"" + theDate + " 11:59:59 PM\")" + nameINC;
最佳答案
你应该关注你想要完成的结果,而不是做事的方式。 innerHTML() 进行编码,innerText() 和 textContent() 也进行编码。因此,如果您希望将字符串作为 < 或 > 返回,您应该对其进行解码。
您可以使用这个 unescapeHTML() 函数来获得您想要的结果。
function unescapeHTML() {
return this.stripTags().replace(/</g,'<').replace(/>/g,'>').replace(/&/g,'&');
}
希望对您有所帮助。我从 Prototype 复制了它。
关于Javascript - 使用 innerHTML 输出字符串 *WITHOUT* HTML 编码的特殊字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5570739/