我有一个JavaScript段,可将输出打印到div。
output.textContent = "";
for(i=0; i<14; i++){
output.append(document.createElement("p").innerHTML = net_words(sonnet[i]));
output.append(document.createElement("br"));
}
net_words
生成输出的函数如下:
function net_words(line) {
var net_line = Math.floor(Math.random()*4)
var ret = ""
if (net_line != 1) {
ret += "<span class=\"netno\">"
ret += line
}
else {
var net_list = line.split(" ")
var rand_word = Math.floor(Math.random() * net_list.length)
ret += "<span class=\"netno\">"
for (var i=0; i<net_list.length; i++) {
if (i == rand_word) {
ret += "<span class=\"netyes\">"
ret += net_list[i]
ret += " "
ret += "</span>"
}
else {
ret += net_list[i]
ret += " "
}
}
}
ret += "</span>"
return ret
}
问题是,它按如下方式打印行:
<span class="netno">From fairest creatures we desire increase</span>
也就是说,它以可见的HTML标记进行打印,而不是将其应用于代码。当我将其粘贴到文本编辑器中以防止堆栈溢出时,除非我将其作为代码段放置,否则它会正常打印(没有标签)。此错误的原因是什么?
问题在这里:
output.append(document.createElement("p").innerHTML = net_words(sonnet[i]));
您认为您已添加<p>
,但实际上您已添加了分配结果。要解决此问题,请执行以下操作:
var p = document.createElement("p");
p.innerHTML = net_words(sonnet[i]);
output.append(p);
要么
output.innerHTML += '<p>' + net_words(sonnet[i]) + '</p>';
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句