【问题标题】:javascript innerHTML issuejavascript内部HTML问题
【发布时间】:2009-07-08 11:28:37
【问题描述】:

使用obj.innerHTML = "abcxyz <abcxyz@ttt.com>" 得到输出:abcxyz 由于尖括号(),其余部分被忽略。 那么如何达到同样的效果。

提前感谢

【问题讨论】:

  • 缺少括号。试试反引号:`

标签: javascript


【解决方案1】:

其实内容还是存在的,只是浏览器将其解释为未知标签,即不显示任何内容。查看生成的页面源(在 FF 中,例如,标记所有文本并使用上下文菜单中的“选择源”)。

尝试引用括号:

obj.innerHTML = "abcxyz <abcxyz@ttt.com>".replace (/</g, "&lt;")

然而,这将取代 all &lt;。如果您还想嵌入其他 HTML,则必须跟踪已编码的内容和未编码的内容。

干杯,

【讨论】:

  • 因为我必须替换两个括号()所以我们不能使用一些正则表达式来替换两者
  • 试试:obj.innerHTML = "abcxyz ".replace (/, "<").replace (/>/g, ">")
  • 实际上,您也并不真正需要替换&gt;,如果它前面没有@ 987654324@.
【解决方案2】:

HTML 编码您的字符串或使用 HTML 实体,例如 &amp;lt;

【讨论】:

  • ...还有一个内置的javascript函数。
  • ... 那是怎么命名的?如果您有此想法,escape() 会进行 URL 编码。
  • 我同意,不要认为有内置函数。在prototype.js中有一个方法:prototypejs.org/api/string/escapeHTML
【解决方案3】:

在 HTML 中,文字“”表示为“>”。见HTML 4.01 section 5.3.2

【讨论】:

    【解决方案4】:

    我会试试这个: unescape('abcxyz %3Cabc...

    【讨论】:

    • 这怎么可能有用?在你取消它时,你的 innerHTML 字符串中再次有 &lt;
    【解决方案5】:

    你需要在字符串中转义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-13
      • 2011-04-08
      • 2014-07-04
      • 2018-03-15
      • 2020-06-19
      • 2015-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多