Javascript - 使用 innerHTML 输出字符串 *WITHOUT* HTML 编码的特殊字符?

标签 javascript html xhtml

似乎在通过 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(/&lt;/g,'<').replace(/&gt;/g,'>').replace(/&amp;/g,'&');
  }

希望对您有所帮助。我从 Prototype 复制了它。

关于Javascript - 使用 innerHTML 输出字符串 *WITHOUT* HTML 编码的特殊字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5570739/

相关文章:

html - 我们是否仅使用 doctype 在 IE6 标准模式下呈现网页?

javascript - 在 JavaScript 中将日期从一种格式转换为另一种格式

javascript - Jquery 在大型数组上自动完成

javascript - 基于Data属性隐藏元素JQuery

javascript - 带有动画/过渡的 JQuery 加载

css - 如何解决为网页创建带有动态文本的图形按钮的问题

javascript - 编辑图表后更新 HighChart 上的系列数组

javascript - 循环遍历 json 对象时,键没有添加到它

javascript - 如何使用 Angular Controller 将变量传递到另一个页面?

html - XHTML 中的 WBR 替代方案