遇到一个问题:var str = “hk”,这是一段字符串,
获取放在网页上显示也是一段字符串:hk,此时的不是标签
怎么才能让在网页上以标签方式显示呢?
右击查看htmlelement的时候,变成这样了:
hk
百度了,但是没起效,请大神指点
在这个页面顶部的地方举个栗子吧比如:
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, '&');
str = str.replace(/</g, '<');
str = str.replace(/>/g, '>');
str = str.replace(/'/g, '´');
str = str.replace(/"/g, '"');
str = str.replace(/\|/g, '¦');
return str;
}
$('#sideBookmark').html(escapeChars(str3));
用html写入,直接上代码了
var str = "<span>hk</span>";
var parent = $('body');
parent.html(str);
document.body.innerHTML = '<span>hk</span>'
要看源码,我怀疑是<>这些符号被转义了,你看起来是
所以,你需要先html….decode()一下。
这个是你想要的:
var str = '<span>hk</span>';
var div = document.createElement('div');
div.innerHTML = str;
var span = div.childNodes[0];
var body = document.getElementsByTagName('body')[0];
body.appendChild(span);
原生方法。
改一下html结构?
比如
<pre>
<span> some word.. </span>
</pre>
这样?
不然就只能做转义了