hereismytext 如何使用JavaScript将“ hereis..."> hereismytext 如何使用JavaScript将“ hereis..."/> hereismytext 如何使用JavaScript将“ hereis..."> hereismytext 如何使用JavaScript将“ hereis...">

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

JavaScript HTML

泡芙

2020-03-23

如果我有跨度,请说:

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

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

第2810篇《如何在JavaScript中更改span元素的文本》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

3个回答
凯西里 2020.03.23

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

 $("#span_id").text("new_value");
猪猪 2020.03.23

使用的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

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

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

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

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

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android