Javascript逻辑问题

时间:2013-10-15 14:51:04

标签: javascript

我有一个全局变量“isOnSecond”,最初设置为false

这是连接到检测布尔值的if语句,如果是,则执行某些操作,然后将布尔值设置回false。因此我希望这个动作能够在一半时间内完成。

我的问题是这个,我知道我在这个功能中遇到了逻辑问题,但是我现在似乎无法想出一个解决方案。

我应该如何使用我想要的逻辑重新使用此功能?

function transComplete()
{
    slideTransStep = 0;
    crtSlideIndex = nextSlideIndex;
    alert(isOnSecond);

    // for IE filters, removing filters re-enables cleartype
    if (nextSlide.style.removeAttribute)
        nextSlide.style.removeAttribute("filter");

    // show next slide
    showSlide((crtSlideIndex >= totalSlides) ? 1 : crtSlideIndex + 1);

    if (isOnSecond == true){
    //unhighlight all controls
    for (var i=0; i < slidesControllersCollection.length; i++){
        if (slidesControllersCollection[i].className === slideHighlightClass)
        slidesControllersCollection[i].className = ""; }

    // highlight the control for the next slide
    if (slidesControllersCollection[i].className === slideHighlightClass)       
    document.getElementById("slide-control-" + crtSlideIndex+1).className = slideHighlightClass;

    isOnSecond = false;
    }
    isOnSecond = true;  
}

4 个答案:

答案 0 :(得分:0)

最后需要'else',否则isOnSecond将始终设置为true。

if (isOnSecond == true){
    //unhighlight all controls
    //lots of code here
    isOnSecond = false;
} else {
    isOnSecond = true;  
}

答案 1 :(得分:0)

if (isOnSecond == true) {
    // do work only every second time
    isOnSecond = false;
}
isOnSecond = true;

这将始终isOnSecond设置为true,即使您之前刚刚将其设置为false。相反,使用

if (isOnSecond) {
    // do work only every second time
    isOnSecond = false;
} else {
    isOnSecond = true;
}

if (isOnSecond) {
    // do work only every second time
}
isOnSecond = !isOnSecond;

答案 2 :(得分:0)

if ($this === $that) {
    //Logic
    isOnSecond = false;
}

isOnSecond = true;

这段代码将确保isOnSecond只有在解释器完成if语句并移动到下一行时才会出错,我可以向你保证这是一段非常短的时间

似乎你应该松开函数末尾的isOnSecond = true,并且只有当你真正需要它而不是永远时才将它再次声明为真。

答案 3 :(得分:0)

看起来你正在使用if语句

if (isOnSecond == true){
     stuff . . .
     isOnSecond = false;
}

然后将isOnSecond设置为true

isOnSecond = true;

如果你这样做:

if (isOnSecond == true){
     stuff . . .
     isOnSecond = false;
}else{
    isOnSecond = true;
}

这将阻止isOnSecond始终显示为“true”。换句话说,如果它设置为true,它将变为false,如果设置为false,它将变为true。