这两天赶一个项目,要求鼠标点击小图显示大图,于是用JS来根据小图来设置大图的SRC,设计完后问题就出来了。在IE6下大图显示不出,鼠标放置在图片上右键链接地址是可以正常显示链接地址的,并且点击显示图片图片才能被正常显示。IE7,IE8和FF是没有这些问题的。代码如下: 代码如下: function picclick() { var pic = $(‘marqueediv’).getElementsByTagName(‘a’); var len = pic.length; for(var i = 0; i < len; i ++ ) { pic[i].onclick = function(i) 在JavaScript编程中,动态设置图片`src`属性是一种常见的需求,比如实现图片预览、轮播图等效果。然而,由于浏览器之间的兼容性差异,尤其是IE6,可能会遇到一些问题。这个问题描述中提到的场景是点击小图后,通过JS更新大图的`src`属性以显示放大后的图片,但在IE6下无法正常显示。 我们需要理解代码的工作原理。函数`picclick`用于处理点击事件,它获取了`marqueediv`元素中的所有`a`标签(假设这些`a`标签包含小图)。接着,对每个`a`标签,为其`onclick`事件绑定一个函数,这个函数会改变大图的`src`和`alt`属性。在`for`循环内部,`this`关键字引用的是当前正在处理的`a`标签,因此可以访问到当前点击的小图。 代码中的`pic[i].onclick`使用了一个立即执行的函数表达式(IIFE),将`i`作为参数传入,确保每个点击事件处理函数有自己的`i`副本,而不是共享同一个`i`值。这样做的目的是在循环结束后,每个点击事件仍然能正确地引用对应的`a`标签。 在函数体内部,首先将所有`a`标签的`className`恢复为初始状态,然后将当前点击的`a`标签的`className`设为`hover`。接下来,通过`substring`和`replace`方法提取出小图`src`的路径,并修改为大图的路径,然后将这个新路径赋值给大图的`src`属性。 问题出在IE6上,可能是因为其对DOM操作和事件处理的实现存在一些缺陷。一种可能的解释是,IE6在某些情况下可能会延迟执行`setAttribute`,导致`src`属性没有立即更新,或者在某些情况下,图片加载的机制出现问题。为了解决这个问题,代码中在`setAttribute`后添加了`return false`,阻止了事件的默认行为,这在某些情况下可能会帮助强制更新`src`属性并立即加载图片。 然而,`return false`并不是万能的解决方案,它可能会影响到其他依赖于该事件的行为,比如链接的跳转。在更现代的浏览器中,更好的做法可能是使用`event.preventDefault()`,但这在IE6中不可用。因此,针对IE6,`return false`可能是比较好的权宜之计。 解决IE6下的JS动态设置图片`src`问题通常需要对IE6的特性和限制有深入的理解,包括它对DOM操作、事件处理以及图片加载机制的实现。在编写代码时,应尽量考虑浏览器兼容性,尤其是在处理旧版本的IE。对于这类问题,可以采用条件注释、特性检测或使用库如jQuery来帮助处理兼容性问题。在实际项目中,如果条件允许,尽量避免支持IE6,转向更现代的浏览器以提供更好的用户体验。
- 粉丝: 4
- 资源: 935
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助