Javascript数组问题:无法读取属性'src'的定义
Javascript array problem: Cannot read property 'src' of undefined
这个脚本已经在waterbirds.org上运行多年了。现在由于某种原因它坏了。它抛出了一个"无法读取属性'src'的未定义"错误,我已经追踪到preLoad[j]。src (runSlideShow函数的第一行)作为问题,因为我可以把一个图像链接地址在那里,它的工作。知道是什么引起了这个问题吗?
// Waterbird Society Theme for Wordpress
// Rotating image banner applet
//
// Usage:
//<body onLoad='rotate_banner(slideShowSpeed, "Image1.jpg", "Image2.jpg"...)'>
var slideShowSpeed;
var j = 0;
var p;
var preLoad = new Array();
function rotate_banner() {
var args = rotate_banner.arguments;
slideShowSpeed = Number(args[0]);
p = args.length;
for (i = 0; i < p-1; i++) {
preLoad[i] = new Image();
preLoad[i].src = args[i+1];
}
runSlideShow();
}
function runSlideShow() {
document.images['SlideShow'].src = preLoad[j].src;
j++;
if (j > (preLoad.length - 1)) j = 0;
t = setTimeout('runSlideShow()', slideShowSpeed*1000);
}
你的代码一切正常,除了它是全局运行的,所以所有的var
声明都创建了全局变量。
waterbirds.org上确切的问题是,j
变量在之前某个地方是有定义的,到preLoad[j]
的时候,j
等于96
,而preload[96]
实际上是没有定义的。
在匿名自执行函数中包装你的横幅,例如,使vars本地化,你就完成了:
(function(){
var slideShowSpeed;
var j = 0;
var p;
var preLoad = new Array();
// to keep rotate_banner global, save it as a property of window object
window.rotate_banner = function() {
var args = rotate_banner.arguments;
slideShowSpeed = Number(args[0]);
p = args.length;
for (i = 0; i < p-1; i++) {
preLoad[i] = new Image();
preLoad[i].src = args[i+1];
}
runSlideShow();
}
function runSlideShow() {
document.images['SlideShow'].src = preLoad[j].src;
j++;
if (j > (preLoad.length - 1)) j = 0;
t = setTimeout('runSlideShow()', slideShowSpeed*1000);
}
})()
并且记住:全局变量是邪恶的!div =)
相关文章:
- 隐藏或删除图像 src=未定义
- 使用angularjs中的自定义服务交换ng src属性
- src 的参数在 javascript 中返回未定义的类型.如何解决
- jQuery - img src 中的变量返回未定义
- 自定义插件,用于在 src 更改时移动图像而不移动图像
- 未捕获的类型错误: 无法读取未定义的属性“src”
- 无法读取属性'src'的未定义
- 如何在更改iframe-src时设置自定义http头
- .map()img src属性未定义
- 使用自定义Javascript日期变量与IMG SRC元素
- JQuery警告通过ajax加载的图像src.未定义的错误
- 如何在JavaScript中使用双引号定义图像src
- Javascript数组问题:无法读取属性'src'的定义
- 未捕获的类型错误:不能设置属性'src'的定义
- Jquery attr('src')在ie8中未定义(在FF中工作)
- 在javascript SRC属性中定义PHP文件的意思是什么?
- SRC是未定义的图像交换变量
- 可以't使用"t"中定义的函数;src";相同的脚本元素
- Angular-如何在自定义指令中将url传递给ng-src
- 使用获得未定义值的$('img[src$=“变量中的图像源结束字符串”;]')选择图像