HTMLドキュメントのIDは、一意であることが意図されています。この関数getElementById
は1つの要素のみを返し、それ以上は返しません。類似の要素のグループの場合、それらをすべて共通class
にしてから使用する必要がありますgetElementsByClassName
(複数の要素と要素に注意してください)-ただし、この関数はIE 8以前では機能しません。したがって、IEをサポートする必要がある場合は、実行してからgetElementsByTagName
、必要なクラスを持つものだけをフィルタリングします。
コードの2番目の部分に関しては、最初に、innerHTMLをnewWorld()
関数の戻り値ではなく実際の文字列に設定しています(現在、内部から何かを返しているわけではないため、これはありません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に慣れていないので、JavaScriptの基本を学び続けることをお勧めします。ただし、最終的には、クロスブラウザーJavascriptを作成するという面倒な作業の多くを解消するjQueryなどのライブラリーを調べたいと思うでしょう。