变量重新分配问题在JS,刹车我的头试图理解
variable reassignment problem in JS, braking my head trying to understand
我正在构建自己的自定义图像幻灯片,下面是到目前为止的代码:
function slideSwitch() {
var images = new Array('Aerodynamics.jpg','ABC_news.jpg','yep.jpg');
var currentImage = 0;
var newImage = 'url(images/'+images[currentImage]+')';
$('.inner_img').css('background-image',newImage).animate({opacity:1.0},4000,function(){
if (currentImage != images.length-1){
currentImage++;
} else {
currentImage = 0;
};
$(this).animate({opacity:0.0},4000);
});
};
function interval(){
setInterval(slideSwitch,1000);
};
interval();
问题是,当interval再次触发slideSwitch()函数时,变量newImage保持与第一次触发时相同的值。你能告诉我我做错了什么吗?我也试着把变量放在函数外面,给我同样的结果。
每次调用该函数时,bc currentImage
都被赋值为0。
你应该把currentImage
放到一个更大的作用域中,并在函数slideSwitch
之外赋值
var currentImage = 0;
function slideSwitch()
{
//same thing, but lose the line: var currentImage = 0
}
function interval()
{
//unchanged
}
interval();
顺便说一下,下面的代码块:
if (currentImage != images.length-1){
currentImage++;
}
else{
currentImage = 0;
};
可以简化为
currentImage = (currentImage + 1) % images.length;
这是因为每次调用它时都在方法内部重新声明var currentImage = 0;
。
要么使用jQuery的.data()
api将其存储在相关的DOM元素中,要么在方法
var currentImage = 0;
function slideSwitch() {
//code
}
将currentImage从slideSwitch函数中拉出,它应该可以正常工作。您的间隔正在调用:
var currentImage = 0;
在这里重置它
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 可以't让我的if语句处理js中的html表单输入
- 我的单元测试选项是什么
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 我的职位回报太快了,如何做出承诺
- 我的jQuery插件参数没有正确启动,遇到了问题
- 如何识别我的网站中的慢速设备
- 如何将JSON数据导入我的ejs模板
- JQuery添加元素需要在我的js之前再次添加JQuery脚本
- 知道为什么我的旋转木马不会自动更改图片吗
- 我的模板未被解析
- 无法将数据从firebase获取到我的html页面
- 角度图表;t显示在我的页面中
- 我的AngularJS表达式没有'不起作用
- 将电视直播频道从网站嵌入我的网站
- /undefined在我的404错误日志中多次出现
- 为什么我的d3.jsselectAll+过滤器没有过滤
- 元素在我的代码中不会.fadeTo.Don'I don’我不知道;s错误的JavaScript、JQuery、H
- 我的javascript for循环不起作用
- 变量重新分配问题在JS,刹车我的头试图理解