2

我想用字符串替换带有“randMsg”的span元素。这是我现在所拥有的:id"saying"

 document.getElementById('randMsg').write(saying);

有任何想法吗?我是 JavaScript 菜鸟,我做错了什么?

4

3 回答 3

1

以下W3C DOM 代码适用于所有主流浏览器,包括 IE8 和更早版本。

var node = document.getElementById('randMsg');
var textToUse = 'Hello, World!';

// Remove all the children of the node.
while (node.hasChildNodes()) {
    node.removeChild(node.firstChild);
}

// Now add the text.
node.appendChild(document.createTextNode(textToUse));

在这里工作 JsFiddle

您也可以使用innerTextFirefox,但 Firefox 不支持:

node.innerText = textToUse;

或者,您可以使用IE 版本 8 和更早textContent版本不支持的:

node.textContent = textToUse;

Quirksmode 对上述所有内容都有很好的浏览器兼容性表

于 2013-06-02T03:05:39.703 回答
1

您可以使用该textContent属性来更新元素内的文本:

document.getElementById("randMsg").textContent = "Replaced Content";

http://jsfiddle.net/RaGng/

或者如果你需要它在 IE8 及以下版本中工作,你可以检测对 的支持textContent,如果不支持,你可以使用非标准innerText来代替:

var el = document.getElementById("randMsg"),
    msg = "Replaced Content";

("textContent" in el) ? el.textContent = msg : el.innerText = msg;

http://jsfiddle.net/RaGng/4/

于 2013-06-02T02:59:26.157 回答
0

工作 jsFiddle 演示

您必须设置innerHTML元素的属性。考虑以下标记:

<span id="randMsg"></span>

在你的 JS 代码中:

var saying = 'Say Hello World';
document.getElementById('randMsg').innerHTML = saying;

你的结果将是:

<span id="randMsg">Say Hello World</span>

笔记

不要忘记在你的元素之后添加这个脚本(或等待 DOM 准备好):

<body>
    <span id="randMsg"></span>
    <script>
        var saying = 'Say Hello World';
        document.getElementById('randMsg').innerHTML = saying;
    </script>
</body>
于 2013-06-02T03:26:34.323 回答