HTML 文档中的 ID 是唯一的。该函数getElementById
只会返回 1 个元素,仅此而已。对于相似元素的组,你想给它们一个共同的class
然后使用getElementsByClassName
(注意复数 Elements vs Element) - 但是,这个函数不适用于 IE 8 或更早版本,所以如果你需要支持 IE,你会拥有做getElementsByTagName
,然后只过滤那些有你想要的课程的人。
至于代码的第二部分,首先您将 innerHTML 设置为实际字符串newWorld()
,而不是函数的返回值(没有,因为您当前没有从 inside 返回某些内容newWorld
)-我认为您的意思是做document.getElementById("p1").innerHTML = newWorld();
。其次,代码的随机部分是正确的,应该每次都选择一个随机的星球。然而,代码的结尾有点令人费解——你到底想在那里做什么?worlds[whichWorld]
将是一个字符串(Earth!
等)而不是一个可调用的函数。如果worlds
是一个函数数组,那么代码就可以工作(假设你也返回了它,因为你打算将它设置为 innerHTML)
简而言之,这样的事情将是将<span>
父元素中的所有元素设置为随机行星的“正确”方式:
<div id="planets">
<p>Hello <span>World!</span></p>
<p>Hello <span>World!</span></p>
<p>Hello <span>World!</span></p>
</div>
和 Javascript:
var spans = document.getElementById('planets').getElementsByTagName('span');
for(var i = 0; i < spans.length; i++) {
spans[i].innerHTML = randomWorld();
}
function randomWorld() {
var worlds = ["Pluto!", "Mars!", "Saturn!", "Earth!", "Mercury!"];
var whichWorld = Math.floor(Math.random() * worlds.length);
return worlds[whichWorld];
}
在这里,它正在发挥作用。您显然是 Javascript 的新手,所以我鼓励您继续尝试并学习它的基础知识。然而,最终,您将希望研究 jQuery 等库,这些库可以消除编写跨浏览器 Javascript 的许多乏味。