5

现在,我是网络编程的新手,尤其是 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;
}

}

可能不是最好的方法,但这段代码首先会起作用。但是,当我单击第三张图片返回第一张图片时,图片工作正常,但文本变为“未定义”。我四处搜索,但我似乎找不到任何与这段代码真正“错误”的地方。

任何帮助表示赞赏。

4

4 回答 4

1

var 名称中的错字:

//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

你是增加点击和click2然后应用它。你应该用-1初始化click和click2;由于 click 由 0 初始化,names[++click2] 将返回第二个项目而不是第一个项目。

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

您应该确保调用您的可用索引namesimgs. 在第三个之后,您将拨打号码4,这没有定义。

你可以这样做:

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

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

这将使数字保持在 0 和 2 之间。

发生的事情: in 中的运算符%在除以a % b时返回其余部分。例如是.ab5 % 2 == 1

于 2012-10-28T15:43:08.683 回答
1

您的最后一个 if 语句未将 click2 分配给-1。将其更改为 click2 = -1

于 2012-10-28T15:43:20.050 回答