簡體   English   中英

循環/ if語句中的Javascript邏輯

[英]Javascript Logic In a loop/if statement

我具有此函數(transComplete),該函數執行高亮顯示相關指示器的任務,該指示器向用戶顯示用戶所在的頁面,這些控制器/指示器的每個元素代表一個頁面,並將適當地突出顯示。

但是,這是獨立工作的,但是當我引入允許與指示器交互以在頁面之間移動的單擊功能時,它可以正確導航,但不能按需突出顯示(每兩次單擊僅工作一次),這使我相信這是我的代碼中的邏輯問題。

原因是布爾值true / false,突出顯示僅在變量“ isOnSecond”的“ true”情況下發生,因此我本質上需要一種在單擊時始終突出顯示相關控制器的解決方案

主要功能如下:

函數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;
        }
    }

onclick函數:

 function clickSlide(control) {

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

我認為您是在仍要從一頁迭代到下一頁的時候創建了trans函數的,現在用戶可以轉到任何幀,您每次都需要清除任何突出顯示的內容,然后再次將其放在當前頁面上。

或者,出於性能考慮,存儲最后突出顯示的內容,然后突出顯示新的內容。

但是...為什么不放棄“ onSecond”邏輯呢? 對於用戶而言,僅兩次獲得一次突出顯示就沒有多大意義了...

無論如何,如果您保留onSecond想法,邏輯將是:

if (lastHighlighted) lastHighlighted.className = ""; 

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

isOnSecond = ! isOnSecond;

但實際上我想知道您是否想要的不是沒有onSecond邏輯的版本:

if (lastHighlighted) lastHighlighted.className = ""; 

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

(Rq將lastHighlighted聲明為var,因此它可以在transComplete的范圍內)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM