提问者:小点点

如何使用JavaScript更改span元素的文本?


如果我有一个跨度,就说:

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

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


共2个答案

匿名用户

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

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

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

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

匿名用户

因此不推荐使用innerHTML。相反,您应该创建一个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的建议修改了第三行代码:“use appendChild();insteed”。
顺便说一句,根据@Jimbo Jonny,我认为通过应用层安全原则,所有内容都应该被视为用户输入。这样你就不会遇到什么惊喜了。