javascript-一个js的for循环的问题

问题描述

一个js的for循环的问题

是这样的,我想做一个和这个图片一样的带缩略图的图片轮换。

问题就出在这个缩略图载入这一块。
我的思路是,页面布局里面先创建一个空的

,css样式里面ul li img的display设置为none。
js里面先创建一个数组用来存图片缩略图的src。加载页面的时候,用ul的innerHTML通过for循环来输入数组长度个''
然后给里面的img加上src属性,给li加个index索引,加上鼠标移入移出事件之类的。

代码如下:
var aSrc = ['img/1.png','img/2.png','img/3.png','img/4.png'];
var oIndex = document.getElementById('indexUl');
var aLi = oIndex.getElementsByTagName('li');
var aImgPre = oIndex.getElementsByTagName('img');
for(var i=0; i
oIndex.innerHTML += '';
}
for(var i=0; i
aLi[i].index = i;
aImgPre[i].src = aSrc[i];
aLi[i].onmouseover = function(){
aImgPre[this.index].style.display = 'block';
}
aLi[i].onmouseout = function(){
aImgPre[this.index].style.display = 'none';
}
}
问题就是。。这样写没什么问题,可是为什么不能把两个for循环写在一起呢
for(var i=0; i
oIndex.innerHTML += '';

aLi[i].index = i;
aImgPre[i].src = aSrc[i];
aLi[i].onmouseover = function(){
aImgPre[this.index].style.display = 'block';
}
这样写为什么不行呢?我一开始这样写,发现,只有最后一个li能正常触发鼠标移入移出事件,前面的li都触发不了。我查了半天,后来发现这样写,aImgPre 里面获得的图片除了最后一个类型是html的图片元素,其他的类型都是undefined。。。这是为什么。。

解决方案

你的for()括号里的表达式真诡异,没见过这样写的

解决方案二:

aLi[i].onmouseover = function(){
aImgPre[this.index].style.display = 'block';
}

把这段改用委托事件

解决方案三:

你的for()括号里的表达式真诡异,没见过这样写的

时间: 2024-10-30 09:04:30

javascript-一个js的for循环的问题的相关文章

javascript 基础篇1 什么是js 建立第一个js程序_基础知识

javascript是一个基于对象和事件驱动,并且具有安全性的脚本语言,应用很广泛,不仅仅是网页,不要被jsp给困住. 基于对象,就是不需要指定变量的类型,你给他一个3,它知道是整型,如果给赋值'3',它就知道是char. 事件驱动,就是单击啊,之类的事件进行驱动. javascript优点:网页互动性强,简单易用.js主要是基于客户端运行,很大程度上减少了服务器的负荷. javascript是脚本编程语言:采用程序段方式实现,与HTML结合,java的编译器其实就是浏览器本身. 安全性:HTM

javascript for循环-js 中for循环成为死循环

问题描述 js 中for循环成为死循环 下面两个代码,通过 main去循环调用 testfor函数,当main中的i>=6的时候,一直死循环,不断地) alert 出 "i=6 , true" ,刚刚接触JavaScript,请教了~ function testfor(x){ for (i=0;i<5;i++){ alert(i); if(i==x) { return false; } } return true; } function main(){ for (i=3;i

关于javascript的一些知识以及循环详解_javascript技巧

javascript的一些知识点: 1.常用的五大浏览器:chrome,firefox,Safari,ie,opera 2.浏览器是如何工作的简化版: 3.Js由ECMAjavascript;DOM;BOM组成: 4.js是弱类型语言(即需要游览器解析了才知道是什么类型的): 5.js是脚本语言(边解析边执行): 6.script也分行内样式,嵌套样式和外联样式. 外联样式一般写在body的最后,因为放在前面会先加载js代码然后再干其他的,影响用户体验. 7.同步和异步 同步:一行一行依次执行.

javascript-我有多个表格带复选框,怎么写一个js实现全选全不选。

问题描述 我有多个表格带复选框,怎么写一个js实现全选全不选. 如果每个表格的第一个复选框都设置ID,感觉js太多,有没有简单的方法 解决方案 网上有很多案例:http://blog.sina.com.cn/s/blog_6f6b4c3c0100nrve.html <script language="javascript"> function cli(Obj) { var collid = document.getElementByIdx_x("all"

在定义一个js类的时候,为什么要设置该类的prototype属性为它所要继承的类的

在定义一个js类的时候,为什么要设置该类的prototype属性为它所要继承的类的实例对象 在写JavaScript类定义的时候,大家很可能都写过下面的代码: function A() {} function B() {} B.prototype = new A() 上面这样写是为了让instanceof语句能起作用.举个例子: 1.不重写子类的prototype属性 b = new B(); b instanceof B //return true b instanceof A // retu

分别用marquee和div+js实现首尾相连循环滚动效果,仅3行代码_javascript技巧

复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <HTML xmlns="http://www.w3.org/1999/xhtml"> <HEAD> <TITLE>分别用marquee

DOM对象本身也是一个js对象,所以严格来说,并不是操作这个对象慢,而是说操作了这个对象后,会触发一些浏览器行为(转)

一直都听说DOM很慢,要尽量少的去操作DOM,于是就想进一步去探究下为什么大家都会这样说,在网上学习了一些资料,这边整理出来. 首先,DOM对象本身也是一个js对象,所以严格来说,并不是操作这个对象慢,而是说操作了这个对象后,会触发一些浏览器行为,比如布局(layout)和绘制(paint).下面主要先介绍下这些浏览器行为,阐述一个页面是怎么最终被呈现出来的,另外还会从代码的角度,来说明一些不好的实践以及一些优化方案. 浏览器是如何呈现一张页面的 一个浏览器有许多模块,其中负责呈现页面的是渲染引

数组循环下标-js数组怎么循环出来,初学不懂

问题描述 js数组怎么循环出来,初学不懂 上述代码的.find('img')[i]错了,那img数组应该怎么循环出来?应该怎么改才是对的? 解决方案 已在chrome下测试通过. 不过大妹子, 建议你下次就不要贴图了, 把代码直接贴出来会节省我们很多时间, 也会有更多的人愿意帮你. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD

html5-JS,jQuery代码 封装到一个JS文件的问题

问题描述 JS,jQuery代码 封装到一个JS文件的问题 $(document).ready(function(){ $(".liren_content:odd").css("float",'right'); $('.mall_list').find('ul li:nth-child(3)').css('border','0'); var count=0; $(".jiaru").click(function () { // alert(111