【问题标题】:Javascript replacing HTML char code with actual characterJavascript 用实际字符替换 HTML 字符代码
【发布时间】:2010-06-07 11:32:38
【问题描述】:

我有一个 HTML 输入文本,它的值是从相关的 div 填充的。我的问题是 div 包含像 & 这样的字符,它将正确显示为 '&' 登录 div 但是当复制到文本框时,文本 '&' 将被显示

如何将& 转换为&'<' 转换为'<'' ' 转换为' ' ???

【问题讨论】:

  • 感谢整理

标签: javascript html regex character-encoding


【解决方案1】:

因此你想unescape HTML entities。使用纯 JS,您可以使用这个 sn-p:

function unescapeHTML(html) {
    var div = document.createElement("DIV");
    div.innerHTML = html;
    return ("innerText" in div) ? div.innerText : div.textContent; // IE | FF
}

使用 jQuery 如下:

function unescapeHTML(html) {
    return $("<div />").html(html).text();
}

但是您也可以在将 div 的内容“复制”到输入元素的值中的步骤中解决此问题。无需抓取 HTML,只需抓取 text。而不是element.innerHTML,而是element.innerText 用于IE 或element.textContent 用于真正的浏览器。

不,您不能也不应该(可靠地)使用正则表达式。

【讨论】:

  • 请注意,unescapeescape 已经是 Javascript 中的函数,使用此代码将覆盖这些函数。然而,它们是不推荐使用的功能,所以它可能并不重要。此外,如果将空字符串传递给 Plain Ol' JS(tm) 方法,则在 IE 中将返回“undefined”,因为您使用的是“falsey”条件检查。 "innerText" in div ? div.innerText : div.textContent; 会解决这个问题。
  • @Andy:这只是一个启动示例,但这是公平的观点。我已经按照你的 cmets 修复了。
【解决方案2】:

我不确定您是如何访问数据的,但可能的解决方案是在 innerHtml 上使用 innerText 属性

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 2015-02-19
    • 2016-10-28
    • 2023-03-11
    相关资源
    最近更新 更多