私は JavaScript プログラミングにまったく慣れていないので、Web サイトの 1 つを維持する時間を節約するためのスクリプトを作成しようとしています。
現在、ドキュメントの先頭から呼び出している同じスクリプトに 2 つの関数があり、onload イベント ハンドラーを使用して両方を同時にロードしようとしています。スクリプトで window.onload コマンドを使用してそれを行っています (スクリプトをできるだけ目立たないようにしたいので、ヘッダーでスクリプトを呼び出すだけです)。問題は、最初の関数だけがロードされ、2 番目の関数がロードされないことです。両方の関数を次のように呼び出すことができます:
window.onload=function(){
function1();
function2();
}
または、これを達成するために使用する必要がある別のコードがありますか?
私はJavaScriptとプログラミング全般に非常に慣れていないため、説明をできるだけ簡単にしていただければ幸いです。
PS onload で複数の関数をロードできない場合は、理由を説明していただけないでしょうか。後でわかります。
わかりました、私の質問はおそらく仮定のために残されすぎていることがわかりました。ここに私が呼び出そうとしている関数のコード全体があります(これは私がhtmlドキュメントの頭で呼び出しているスクリプトです):
私の変数はセルビア語で書かれているため (私はセルビア出身です)、コードをここに置くことは避けようとしていましたが、あまり混乱することなく参照できることを願っています。
以下のコードでは、スクリプトの最後で 2 つの関数 (lista() と ostale()) を呼び出しています。moveover() 関数は、lista() 関数によって呼び出される単なるヘルパー関数です。本質的に、最初のもの (lista()) は div "boje" (英語では "colors" に翻訳されます) のすべての要素を一覧表示し、ユーザーがマウスを置いた色に応じて、背景画像が変化します。また、ユーザーがホバーすることになっている画像要素にいくつかの属性を追加します。2 番目のもの (ostale() (英語の「その他」に翻訳)) は、ユーザーがそれらの上にカーソルを置いた場合に何もしないはずの残りのカラー画像にのみ属性を追加することになっています。しかし、ローカルホストでページを開くとFirefox では表示されません」
function lista()
{
var boje = document.getElementById('boje');
var broj = boje.childNodes.length;
for(i=1; i<broj; i++)
{
var stavka = boje.childNodes.item(i);
stavka.setAttribute("id", i);
stavka.setAttribute("onmouseover", "moveover(src)");
stavka.setAttribute("alt", "Boja");
stavka.setAttribute("class", "boja");
stavka.hspace="2";
stavka.height="23";
}
}
function moveover(adresaBoje)
{
var izvor = adresaBoje;
var slika = izvor.slice(0, izvor.length-4);
var pocetak = "url(";
var ekstenzija = ".jpg)";
var novaSlika = pocetak.concat(slika, ekstenzija);
document.getElementById('slika').style.backgroundImage=novaSlika;
}
function ostalo(){
var ostaleboje = document.getElementById('ostale');
var ostalebroj = ostaleboje.childNodes.length;
for(n=1; n<ostalebroj; n++)
{
var ostalestavka = ostaleboje.childNodes.item(n);
ostalestavka.setAttribute("alt", "Boja");
ostalestavka.hspace="2";
ostalestavka.height="23";
}
}
window.onload=function(){
try
{
lista();
ostalo();
}
catch(err)
{
alert(err);
}
}
ページを読み込もうとすると、「TypeError: stavka.setAttribute は関数ではありません」というエラーが表示されます。
これは、私が操作しようとしている html ドキュメントです。
<div id="slika" style="background-image: url(images/nova_brilliant/1.jpg)">
</div>
<div id="tekst">
<h1>Nova Brilliant</h1>
<div id="sadrzaj">
<p>Pređite mišem preko željene boje da biste videli kako izgleda ova kuhinja u toj boji:</p>
<div id="boje">
<img src="images/nova_brilliant/1.gif"><img src="images/nova_brilliant/2.gif"><img src="images/nova_brilliant/3.gif">
</div>
<p>Ostale dostupne boje:</p>
<div id="ostale">
<img src="images/nova_brilliant/4.gif"><img src="images/nova_brilliant/5.gif"><img src="images/nova_brilliant/6.gif">
</div>
</div>
</div>