gpt4 book ai didi

javascript - 分配给匿名函数的变量未定义

转载 作者:行者123 更新时间:2023-11-30 10:46:00 24 4
gpt4 key购买 nike

我正在使用分配给变量的匿名函数来尽量减少全局变量的使用。在此函数中有嵌套函数:一个用于预加载和调整图像大小,以及另外两个用于导航的嵌套函数(下一个和上一个)。下面的代码生成错误,匿名函数分配给的变量未定义:无法读取未定义的属性“preload_and_resize” 如果您发现问题,请告诉我。非常感谢。

<html>
<head>
<script type="text/javascript">
var runThisCode=(function(){
var myImages=new Array("img/01.jpg","img/02.jpg","img/03.jpg");
var imageObj = new Array();
var index=0;
var preload_and_resize=function(){
var i = 0;
var imageArray = new Array();
for(i=0; i<myImages.length; i++) {
imageObj[i] = new Image();
imageObj[i].src=myImages[i];
}

document.pic.style.height=(document.body.clientHeight)*0.95;
};
var next_image=function(){
index++;
if(index<imageObj.length){
document.pic.src=imageObj[index].src;
}
else{
index=0;
document.pic.src=imageObj[index].src;
}
};
var prev_image=function(){
index--;
if(index>=0){
document.pic.src=imageObj[index].src;
}
else{
index=myImages.length-1;
document.pic.src=imageObj[index].src;
}
};
})();
</script>
</head>
<body onload="runThisCode.preload_and_resize();">
<div align="center">
<img name="pic" id="pic" src="img/01.jpg"><br />
<a href="JavaScript:runThisCode.prev_image()">Prev</a><a href="JavaScript:runThisCode.next_image()">Next</a>
</div>
</body>
</html>

最佳答案

您的匿名函数不返回任何内容,因此当您运行它时,会返回 undefined。这就是 runThisCode 未定义的原因。尽管如此,按照您编写的方式,preload_and_resize 将是本地,因此您无论如何都无法访问它。

相反,您希望此匿名函数构造一个对象,并返回那个。像这样的东西应该有用,或者至少让你接近:

var runThisCode=(function(){
var result = {};
result.myImages=new Array("img/01.jpg","img/02.jpg","img/03.jpg");
result.imageObj = new Array();
result.index=0;
result.preload_and_resize=function(){
var i = 0;
var imageArray = new Array();
for(i=0; i< result.myImages.length; i++) {
imageObj[i] = new Image();
imageObj[i].src=myImages[i];
}

document.pic.style.height=(document.body.clientHeight)*0.95;
};
result.next_image=function(){
index++;
if(index<imageObj.length){
document.pic.src=imageObj[index].src;
}
else{
index=0;
document.pic.src=imageObj[index].src;
}
};
result.prev_image=function(){
index--;
if(index>=0){
document.pic.src=imageObj[index].src;
}
else{
index=myImages.length-1;
document.pic.src=imageObj[index].src;
}
};

return result;
})();

关于javascript - 分配给匿名函数的变量未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8261555/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com