如果我有一个跨度,说:

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

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


当前回答

你可以使用document.querySelector("[Span]")。textContent = "content_to_display";

其他回答

document.getElementById('myspan').innerHTML = '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';
}

我使用Jquery,上面没有一个帮助,我不知道为什么,但这是有效的:

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

(函数($){ $(文档)时函数(){ $ (" # myspan”)。text("This is span"); }); } (jQuery)); < script src = " https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js " > < /脚本> <span id="myspan"> hereismytext </span>

用户text()更改span文本。

你可以使用document.querySelector("[Span]")。textContent = "content_to_display";