Javascript Logic In a loop/if statement

Javascript Logic In a loop/if statement

本文关键字:if statement loop Logic In Javascript      更新时间:2023-09-26

我有这个函数(transComplete),它执行突出显示相关指标的任务,向用户显示他们所在的页面,这些控制器/指标的每个元素代表一个页面,并将适当地突出显示。

这独立工作,但是当我引入一个单击函数时,该函数允许与指标交互以在页面之间移动,它可以正确导航,但不会根据需要突出显示(仅每单击两次有效),这让我相信这是我的代码中的逻辑问题。

true/false 的布尔逻辑是原因,突出显示仅发生在变量"isOnSecond"的"真"情况下,所以我本质上需要一个在单击时始终突出显示相关控制器的解决方案

主要功能如下:

函数 transComplete() {

slideTransStep = 0;
crtSlideIndex = nextSlideIndex;
// 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);
    //Highlights a nav circle every two transitions as the boolean alternates
        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 
            document.getElementById("slide-control-" + crtSlideIndex).className = slideHighlightClass;  
            }   
            isOnSecond = false;
        }
        else {
        isOnSecond = true;
        }
    }

点击功能:

 function clickSlide(control) {
        showSlide(Number(control.id.substr(control.id.lastIndexOf("-")+1)),true);
    }

我认为您在从一页迭代到下一页时制作了 trans 函数,现在用户可以转到任何帧,您需要每次清除任何突出显示,然后将其再次放在当前页面上。

或者更确切地说,为了性能起见,存储最后一个突出显示的,然后突出显示新的。

但。。。为什么不直接放弃"onsecond"逻辑呢?对于用户来说,只获得两次突出显示没有多大意义......

无论如何,如果你保持它第二个想法,逻辑将是:

if (lastHighlighted) lastHighlighted.className = ""; 
if (isOnSecond) {
   lastHighLighted = document.getElementById("slide-control-" + crtSlideIndex);
   lastHighLighted.className = slideHighlightClass;
} else {
   lastHighLighted = null;
}
isOnSecond = ! isOnSecond;

但实际上我想知道你想要的是否不是没有on2逻辑的版本:

if (lastHighlighted) lastHighlighted.className = ""; 
lastHighLighted = document.getElementById("slide-control-" + crtSlideIndex);
lastHighLighted.className = slideHighlightClass;

(Rq 声明 lastHighlight 为 var,因此它可以在 transComplete 范围内)