5

今、私はWebプログラミング、特にjavascriptに不慣れです。ユーザーが画像をクリックしたときにウェブページ上の画像とそのテキストを更新するスクリプトを作成しようとしています。コードは次のとおりです。

//Images array
imgs = Array("test1.jpg", "test2.jpg", "test3.jpg");

//Names array
names = Array("Test1", "Test2", "Test3");

//Holds how many times our page has been clicked
var click = 0;

//Another click var
var click2 = 0;

//change function 
function change()
{

//Get the ID of 'nam', and start incrementing the elements in our array
document.getElementById("nam").innerHTML = names[++click2];

//Get an element with the ID 'first', and start incrementing the elements in  our      array
document.getElementById("first").src = imgs[++click];

//If the user clicks to the end of the gallery
if(click==2)
{
    click = -1;
}

if(click2==2)
{
    click = -1;
}

}

おそらくこれを行うための最良の方法ではありませんが、このコードは最初は機能します。ただし、3番目の画像をクリックして最初の画像に戻ると、画像は正常に機能しますが、テキストは「未定義」になります。私は周りを検索しましたが、このコードで本当に「間違った」ものを見つけることができないようです。

どんな助けでも大歓迎です。

4

4 に答える 4

1

var nameのタイプミス:

//If the user clicks to the end of the gallery
if(click==2)
{
    click = -1;
}

if(click2==2)
{
    click = -1;
}

する必要があります

//If the user clicks to the end of the gallery
if(click==2)
{
    click = -1;
}

if(click2==2)
{
    click2 = -1;
}
于 2012-10-28T15:42:22.153 に答える
1

クリックとクリック2をインクリメントしてから、それを適用します。クリックとクリック2を-1で初期化する必要があります。クリックは0で初期化されるため、names[++click2]は最初ではなく2番目のアイテムを返します。

var click = -1;

//Another click var
var click2 = -1;

また

if(click2==2)
{
    click = -1;
}

する必要があります

if(click2==2)
{
    click2 = -1;
}
于 2012-10-28T15:42:25.877 に答える
1

namesとの使用可能なインデックスを必ず呼び出す必要がありますimgs。3番目の番号の後に電話をかけますが4、これは定義されていません。

あなたはこのようにそれを行うことができます:

document.getElementById("nam").innerHTML = names[(++click2)%names.length];

document.getElementById("first").src = imgs[(++click)%imgs.length];

これにより、数値は0から2の間に保たれます。

発生すること:の演算子%は、で割ったときに残りを返しa % bます。たとえば、です。ab5 % 2 == 1

于 2012-10-28T15:43:08.683 に答える
1

最後のifステートメントでclick2が-1に割り当てられていません。click2=-1に変更します

于 2012-10-28T15:43:20.050 に答える