如何在JavaScript中更改span元素的文本

如果我有跨度,请说:

<span id="myspan"> hereismytext </span>

如何使用JavaScript将“ hereismytext”更改为“ newtext”?

凯西里2020/03/23 14:14:19

我使用Jquery并且以上方法均无济于事,我不知道为什么,但这有效:

 $("#span_id").text("new_value");
猪猪2020/03/23 14:14:19

使用的innerHTMLSO不推荐相反,您应该创建一个textNode。这样,您就可以“绑定”您的文本,并且至少在这种情况下,您不容易受到XSS攻击。

document.getElementById("myspan").innerHTML = "sometext"; //INSECURE!!

正确的方式:

span = document.getElementById("myspan");
txt = document.createTextNode("your cool text");
span.appendChild(txt);

有关此漏洞的更多信息: 跨站点脚本(XSS)-OWASP

2017年11月4日编辑:

根据@mumush建议修改的第三行代码:“改为使用appendChild();”。
顺便说一句,根据@Jimbo Jonny所说,我认为应该通过应用“分层安全性”原则将所有内容都视为用户输入。这样,您就不会遇到任何惊喜。

乐米亚2020/03/23 14:14:19

对于现代浏览器,您应该使用:

document.getElementById("myspan").textContent="newtext";

尽管较旧的浏览器可能不知道textContent,但不建议使用,innerHTML因为当用户输入新文本时,它会引入XSS漏洞(有关更多详细讨论,请参见下面的其他答案):

//POSSIBLY INSECURE IF NEWTEXT BECOMES A VARIABLE!!
document.getElementById("myspan").innerHTML="newtext";