我有一段代码,我已经写过,应该跟踪哪个图像将在页面上显示,具体取决于按下哪个按钮
$(document).ready(function(){
$("#moveleft").click(function(){
var negoff = "false";
$("#slideshow>ul>li").animate({left: '-=' + actualwidth + 'px'}, 500);
$("#slideshow>ul>li:first-child").remove();
offset++;
console.log("Offset: " + offset);
if(offset > 4){
offset = 0;
}
if(offset < 0){
offset = offset * -1;
negoff = true;
}
$("#slideshow>ul").append('<li><img src="images/' +
contentcategories[offset] + '.jpg"/></li>');
$("#slideshow>ul>li:last-child").css({width: picturewidth + "px",
left: + 6 * actualwidth + "px"});
if(negoff){
offset = offset * -1;
negoff = false;
}
});
$("#moveright").click(function(){
var posoff = "false";
$("#slideshow>ul>li").animate({left: '+=' + actualwidth + 'px'}, 500);
$("#slideshow>ul>li:last-child").remove();
offset--;
console.log("Offset: " + offset);
if(offset < -4){
offset = 0;
console.log("Offset: " + offset);
}
if(offset > 0){
offset = offset * -1;
posoff=true;
console.log("Posoff: " + posoff);
}
$("#slideshow>ul").prepend('<li><img src="images/' +
contentcategories[(contentnum - 1) + offset] + '.jpg"/></li>');
$("#slideshow>ul>li:first-child").css({width: picturewidth + "px",
left: + 0 + "px"});
if(posoff){
offset = offset * -1;
posoff = false;
}
});
});
令人困惑的是,如果我连续两次点击#moveright按钮,偏移量将变为-1,然后变为0并继续循环显示2个值。 #moveleft按钮几乎发生了同样的事情。它循环显示值0和1.
我对此感到困惑,因为我将偏移量变量设置为0的唯一地方是如果超过4或低于-4而且我没有看到它在变为2之后被设置为0的原因或-2。
答案 0 :(得分:1)
从var negoff = "false";
和var posoff = "false";
删除引号。
您的代码可能会被重构一些,但这既不是在这里也不是在那里。问题的关键在于"false" == true
,因为非空字符串在JavaScript中是真正的值。我认为这只是一个错字,但这就是发生的事情:
offset
从0开始。如果单击#moveLeft
,它将增加到1.然后它乘以-1,因为if(negoff)
将为真。所以现在它是-1,然后下一次点击将其增加回0.冲洗并重复。 #moveRight
发生了相反的情况。
答案 1 :(得分:1)
让我们来看看你在这里做了什么。你正在将一个字符串写入变量,试图将其用作布尔值,i。即true和false,然后,在if语句中,检查变量是否为:not null,not undefined,not false。这里很棘手的事实是它实际上是定义的,它不是null,而且它是一个字符串(“false”)
长话短说:删除“假”周围的“”,应该没问题。