在html标记中附加特殊字符

时间:2014-05-20 14:50:48

标签: javascript html

如何在html标签中附加特殊字符?

<html>
<head></head>
<body>
     <script>
        tool_tip_str = '!#$%^&&*()<>\'\"';
        var html = '<div title="' + tool_tip_str + '"> text is here </div>';
        document.write(html);
    </script>
</body>

此代码正在生成结果

<div "="" title="!#$%^&amp;&amp;*()&lt;&gt;'"> text is here </div>

但它应该产生

<div title="!#$%^&&*()<>\'\""> text is here </div>

为什么奇怪的字符

  

&#34; =&#34;&#34;

正在追加结果吗?有没有办法用黑色斜杠显示单引号或双引号?

2 个答案:

答案 0 :(得分:2)

JSFiddle

我得到了这个结果:

Image of source

Image of outcome

使用:

tool_tip_str = '!#$%^&&*()<>\'&quot;';

如果要将所有特殊字符更改为HTML实体,则可以编写如下函数:

function change(mystring)
{
  return mystring.replace(/&/g, "&amp;").replace(/>/g, "&gt;").replace(/</g, "&lt;").replace(/"/g, "&quot;");
}

然后执行:

tool_tip_str = change(tool_tip_str);

但显然,您必须更改change()中的所有内容才能获得您想要的内容。

答案 1 :(得分:0)

 <body>
      <script>
         tool_tip_str = '!#$%^&&*()<>\'\"';
         tool_tip_str = tool_tip_str.replace('"','&quot;');
         var html = '<div title="' + tool_tip_str + '"> text is here </div>';
         document.write(html);
     </script>
 </body>

可能需要转换&#34;在输出之前进入html实体。