search

Home  >  Q&A  >  body text

javascript - js 字符串转html标签

遇到一个问题:var str = "<span>hk</span>",这是一段字符串,
获取放在网页上显示也是一段字符串:<span>hk</span>,此时的<span></span>不是标签
怎么才能让<span></span>在网页上以标签方式显示呢?
右击查看htmlelement的时候,变成这样了:
<span>hk</span>
百度了,但是没起效,请大神指点

大家讲道理大家讲道理2902 days ago381

reply all(6)I'll reply

  • 怪我咯

    怪我咯2017-04-10 17:22:55

    这个是你想要的:

    var str = '<span>hk</span>';
    var p = document.createElement('p');
    p.innerHTML = str;
    var span = p.childNodes[0];
    var body = document.getElementsByTagName('body')[0];
    body.appendChild(span);
    

    原生方法。

    reply
    0
  • 怪我咯

    怪我咯2017-04-10 17:22:55

    在这个页面顶部的地方举个栗子吧比如:

    var str1 = "<span>111</span>";
    var str2 = "<span>222</span>";
    var str3 = "<script>alert('333')</script>";
    
    document.getElementById('sideBookmark').innerHTML = str1; //原生js写法
    
    $('#sideBookmark').html(str2); //jq写法
    

    不过一般情况下要注意防xss注入,所以要对一些字符转义。比如你可以定义个函数

    function escapeChars(str) {
        str = str.replace(/&/g, '&amp;');
        str = str.replace(/</g, '&lt;');
        str = str.replace(/>/g, '&gt;');
        str = str.replace(/'/g, '&acute;');
        str = str.replace(/"/g, '&quot;');
        str = str.replace(/\|/g, '&brvbar;');
        return str;
    }
    
    $('#sideBookmark').html(escapeChars(str3));

    reply
    0
  • 天蓬老师

    天蓬老师2017-04-10 17:22:55

    用html写入,直接上代码了

    var str = "<span>hk</span>";
    var parent = $('body');
    parent.html(str);

    reply
    0
  • 高洛峰

    高洛峰2017-04-10 17:22:55

    document.body.innerHTML = '<span>hk</span>'

    reply
    0
  • PHP中文网

    PHP中文网2017-04-10 17:22:55

    要看源码,我怀疑是<>这些符号被转义了,你看起来是<实际上源码是实体符号。
    所以,你需要先html....decode()一下。

    reply
    0
  • 怪我咯

    怪我咯2017-04-10 17:22:55

    改一下html结构?
    比如

    <pre>
    <span> some word.. </span>
    </pre>

    这样?
    不然就只能做转义了

    reply
    0
  • Cancelreply