JavaScript图像旋转
我希望这个问题适合于堆栈溢出。我在网上四处搜寻,查阅了一大堆书,但找不到这个问题的答案 我想使用我遇到的一些JavaScript(见下文)。我已经在一个网页中设置了脚本,它运行良好。。。但是,作为一名经验丰富的程序员,我并不完全理解它是如何工作的。我做了一些研究,但仍然无法破解代码中的几个部分 我知道它创建了一个数组,但这是一个多维数组吗 另外,我不明白为什么在setTimeout函数中“active”写为(“+active+”)(加号??): 设置超时(“图像旋转”(+活动+”),5000) 为什么单词两端的加号都是active?另外,active不应该是一个数字吗 谢谢JavaScript图像旋转,javascript,arrays,function,Javascript,Arrays,Function,我希望这个问题适合于堆栈溢出。我在网上四处搜寻,查阅了一大堆书,但找不到这个问题的答案 我想使用我遇到的一些JavaScript(见下文)。我已经在一个网页中设置了脚本,它运行良好。。。但是,作为一名经验丰富的程序员,我并不完全理解它是如何工作的。我做了一些研究,但仍然无法破解代码中的几个部分 我知道它创建了一个数组,但这是一个多维数组吗 另外,我不明白为什么在setTimeout函数中“active”写为(“+active+”)(加号??): 设置超时(“图像旋转”(+活动+”),5000)
<script type="text/javascript">
var the_images = [];
window.onload = function(){
the_images.push(["http://www.adobe.com", "images/banner_1.jpg", "Adobe"]);
the_images.push(["http://www.microsoft.com", "images/banner_2.jpg", "Microsoft"]);
the_images.push(["http://www.mozilla.org", "images/banner_3.jpg", "Mozilla"]);
image_rotate(0);
}
function image_rotate(active){
var image_container = document.getElementById("ad");
image_container.innerHTML = "<a href=\""+the_images[active][0]+"\"><img src=\""+the_images[active][1]+"\" alt=\""+the_images[active][2]+"\" title=\""+the_images[active][2]+"\" /></a>";
active++;
if(active >= the_images.length){
active = 0;
}
setTimeout("image_rotate("+active+")", 5000);
}
</script>
var_图像=[];
window.onload=函数(){
_images.push([“http://www.adobe.com“,”images/banner_1.jpg“,”Adobe“]);
_images.push([“http://www.microsoft.com","images/banner_2.jpg","Microsoft",;
_images.push([“http://www.mozilla.org","images/banner_3.jpg,"Mozilla",;
图像旋转(0);
}
功能图像旋转(活动){
var image_container=document.getElementById(“ad”);
image_container.innerHTML=“”;
active++;
如果(活动>=图像长度){
活动=0;
}
设置超时(“图像旋转”(+活动+”),5000);
}
看起来“图像”只是数组中的一组值,这些数组被推到另一个数组中(图像[]
)
image\u rotate
函数获取一个整数/索引,并从The\u images[]
中的该索引中适当地提取图像值,以创建链接和图像标记(例如,第一个元素是href,第二个元素是图像路径等)
然后,索引active
将递增,如果它大于\u images[]中的图像值数组数,则将其设置为0(使其返回到开始/第一个图像)
setTimeout
是每5秒调用一次以保持其运行的程序。之所以有+
符号,是因为值/索引被连接到字符串-通过这种方式setTimeout调用image\u rotate(0)
或active
的任何值
我可能遗漏了一些东西,但是这个函数看起来是递归的——它永远在调用自己(或者直到用户离开页面为止)
希望能有所帮助。看起来“图像”只是数组中的一组值,这些数组被推到另一个数组中(图像[]
)
image\u rotate
函数获取一个整数/索引,并从The\u images[]
中的该索引中适当地提取图像值,以创建链接和图像标记(例如,第一个元素是href,第二个元素是图像路径等)
然后,索引active
将递增,如果它大于\u images[]中的图像值数组数,则将其设置为0(使其返回到开始/第一个图像)
setTimeout
是每5秒调用一次以保持其运行的程序。之所以有+
符号,是因为值/索引被连接到字符串-通过这种方式setTimeout调用image\u rotate(0)
或active
的任何值
我可能遗漏了一些东西,但是这个函数看起来是递归的——它永远在调用自己(或者直到用户离开页面为止)
希望能有所帮助。图像是一个2D阵列。如果使用chrome之类的调试工具逐行检查每一行,并在控制台中查看每个变量的值,您将能够看到代码的工作方式
setTimeout("image_rotate("+active+")", 5000);
图像旋转函数采用数字参数。您在setTimeout函数中所做的是通过传递参数来调用它。这就是添加活动变量值后的实际情况
setTimeout("image_rotoate(1)", 5000);
(+)符号用于连接。javascript自动将活动数字变量转换为字符串。希望这有帮助图像是2D阵列。如果使用chrome之类的调试工具逐行检查每一行,并在控制台中查看每个变量的值,您将能够看到代码的工作方式
setTimeout("image_rotate("+active+")", 5000);
图像旋转函数采用数字参数。您在setTimeout函数中所做的是通过传递参数来调用它。这就是添加活动变量值后的实际情况
setTimeout("image_rotoate(1)", 5000);
(+)符号用于连接。javascript自动将活动数字变量转换为字符串。希望这对您有所帮助在开始修改代码之前,您可能应该尝试阅读一些有关JavaScript的教程。这是给JavaScript一个非常坏的名字的原因之一。它实际上是一种非常深刻和复杂的语言,人们只是“剪切和粘贴”功能造成了很多负面印象 也就是说,我将帮助您解决问题,希望您能够更好地理解这段代码 是,正在此行创建数组(不,它不是多维数组):
var the_images = [];
setTimeout("image_rotate("+active+")", 5000);
setTimeout("image_rotate("+active+")", 5000);
var
表示“我要声明一个变量”图像
是数组的名称,[]
称为数组文字或数组初始值设定项。它正在将\u图像初始化为空数组。(例如,如果您改为编写var the_images=[1,'hello',false];
,它将使用三个元素对其进行初始化,即数字、字符串和布尔值。)
数组有一个名为push
的函数,它将元素添加到数组的末尾。因此,您将在以下几行中看到向数组添加元素:
the_images.push(["http://www.adobe.com", "images/banner_1.jpg", "Adobe"]);
the_images.push(["http://www.microsoft.com", "images/banner_2.jpg", "Microsoft"]);
the_images.push(["http://www.mozilla.org", "images/banner_3.jpg", "Mozilla"]);
请注意,您正在将数组添加到数组中,这可能是您得到这些数组是多维数组的印象的地方(数组的数组在技术上是多维的)
var debugString = "image_rotate("+active+")";
setTimeout( debugString );
console.log( debugString );
var image = the_images[0]
html = "<a href='" + image[0] + "'><img src='" + image[1] + "' title='" + image[2] + "'></a>"