如果我有一个跨度,说:
<span id="myspan"> hereismytext </span>
如何使用JavaScript将“hereismytext”更改为“newtext”?
如果我有一个跨度,说:
<span id="myspan"> hereismytext </span>
如何使用JavaScript将“hereismytext”更改为“newtext”?
当前回答
还有另一种方法:
var myspan = document.getElementById('myspan');
if (myspan.innerText) {
myspan.innerText = "newtext";
}
else
if (myspan.textContent) {
myspan.textContent = "newtext";
}
innerText属性将被Safari,谷歌Chrome和MSIE检测。对于Firefox来说,标准的操作方式是使用textContent,但是从版本45开始,它也有一个innerText属性,就像最近有人好心告诉我的那样。该解决方案测试浏览器是否支持这些属性,如果支持,则分配“newtext”。
现场演示:这里
其他回答
还有另一种方法:
var myspan = document.getElementById('myspan');
if (myspan.innerText) {
myspan.innerText = "newtext";
}
else
if (myspan.textContent) {
myspan.textContent = "newtext";
}
innerText属性将被Safari,谷歌Chrome和MSIE检测。对于Firefox来说,标准的操作方式是使用textContent,但是从版本45开始,它也有一个innerText属性,就像最近有人好心告诉我的那样。该解决方案测试浏览器是否支持这些属性,如果支持,则分配“newtext”。
现场演示:这里
编辑:这篇文章写于2014年。很多事情已经发生了变化。你可能不再关心IE8了。Firefox现在支持innerText。
如果你是提供文本的人,而没有一部分文本是由用户提供的(或其他一些你不能控制的来源),那么设置innerHTML可能是可以接受的:
// * Fine for hardcoded text strings like this one or strings you otherwise
// control.
// * Not OK for user-supplied input or strings you don't control unless
// you know what you are doing and have sanitized the string first.
document.getElementById('myspan').innerHTML = 'newtext';
然而,正如其他人指出的那样,如果您不是文本字符串的任何部分的源,那么如果您不注意首先正确地清除文本,那么使用innerHTML可能会使您遭受像XSS这样的内容注入攻击。
如果你使用来自用户的输入,这里有一种方法可以安全地做到这一点,同时还保持跨浏览器的兼容性:
var span = document.getElementById('myspan');
span.innerText = span.textContent = 'newtext';
Firefox不支持innerText, IE8也不支持textContent,所以如果你想保持跨浏览器兼容性,你需要同时使用这两种浏览器。
如果你想避免回流(由innerText引起)在可能的情况下:
var span = document.getElementById('myspan');
if ('textContent' in span) {
span.textContent = 'newtext';
} else {
span.innerText = 'newtext';
}
你也可以使用querySelector()方法,假设'myspan' id是唯一的,因为该方法返回带有指定选择器的第一个元素:
document.querySelector('#myspan').textContent = 'newtext';
developer.mozilla
document.getElementById("myspan").textContent="newtext";
这将选择id为myspan的dom-node,并将其文本内容更改为新文本
和其他答案一样,不建议使用innerHTML和innerText,最好使用textContent。这个属性很受支持,你可以这样检查它: http://caniuse.com/#search=textContent