代码之家  ›  专栏  ›  技术社区  ›  Kirzilla

从td中获取转义的html并将其作为值输入

  •  0
  • Kirzilla  · 技术社区  · 14 年前

    我有HTML

    <table>
    <tr><td id="cell">&lt;a href=&quot;&quot;&gt;Google.com&lt;/a&gt;</td></tr>
    </table>
    
    <div id="to"></div>
    

    我有javascript

    $(document).ready(function() {
       var html = '<input type="text" value="'+$("#cell").html()+'" />'
       $("#to").append(html);
    });
    

    我不知道为什么,但当执行这个代码时,我只得到 <a href= 输入中。在Firebug的检查器中,输入HTML显示为 <input type="text" a&gt;="" &gt;google.com&lt;="" value="&lt;a href=" > 正如你所看到的, $quot; 替换为 " -这就是问题所在。

    我试过用 .text() 而不是 .html() -几乎是同样的情况。

    我犯了什么错误?

    谢谢您。

    3 回复  |  直到 14 年前
        1
  •  0
  •   Tomalak    14 年前

    试试这个:

    $(document).ready(function() {
       $('<input type="text">').val($("#cell").html()).appendTo("#to");
    });
    

    避免从字符串和变量构建HTML,使用jquery和dom提供给您的函数为属性赋值或更改元素的文本。这样更安全,而且也更可读。

        2
  •  2
  •   Nick Craver    14 年前

    您需要对值进行编码(通过 .val() 在这种情况下),不要在字符串中直接使用它,如下所示:

    $(document).ready(function() {
       var html = $('<input type="text" />').val($("#cell").html());
       $("#to").append(html);
    });
    

    You can see it in a demo here . 问题是 &quote; 被解码为 " 这使您的HTML看起来像这样:

    <input type="text" value="&lt;a href=""&gt;Google.com&lt;/a&gt;" />
    

    你可以看到这让浏览器有点疯狂:)

        3
  •  0
  •   Chinmayee G    14 年前

    尝试编写自定义函数来取消对字符串的scape

    function unescape(html) {
      return html.
        replace(/&amp;/gmi, '&').
        replace(/&quot;/gmi, '"').
        replace(/&gt;/gmi, '>').
        replace(/&lt;/gmi, '<')
    }