2017-06-14 26 views
0

標題真的解釋了它的大部分內容,但基本上,這應該在我點擊元素時發出警報,但它不會。它也確實工作時,我把警報()以外的if,並在jquery開始點擊。這裏是我的代碼:詢問變量是否等於jQuery中的一個整數點擊不起作用

var hasClickedWelcome = 0; 

//Onclick event 
$(".menu-welcome").click(function() { 
    var welcomeButton = document.getElementByClassName("menu-welcome"); 
    if(hasClickedWelcome == 0) { 
     alert("hello"); 
     $(".menu-welcome").addClass("menu-welcome-clicked"); 
     hasClickedWelcome = 1; 
    } else { 
     welcomeButton.classList.remove("menu-welcome-clicked"); 
     hasClickedWelcome = 0; 
    } 
}); 
+4

'hasClickedWelcome == hasClickedWelcome'永遠是真的。我想你想在那裏有if(hasClickedWelcome == 0)。 –

+0

沒有函數'getElementByClassName'。它是'getElementsByClassName',它返回一個'NodeList',而不是一個元素。你爲什麼不用'$(「。menu-welcome」)'而不是'welcomeButton'? – Barmar

+0

您是否定義了hasClickedWelcome? –

回答

0

你的if語句是沒有意義的

if(hasClickedWelcome == hasClickedWelcome) 

這將始終返回true,你總是打這個代碼不管是什麼:

alert("hello"); 
$(".menu-welcome").addClass("menu-welcome-clicked"); 
hasClickedWelcome = 1; 

因此,你有一個明確的邏輯問題。

編輯:查看評論區丹尼爾·貝克建議

+0

這只是一個問題,當我把代碼放入這篇文章時,問題仍然存在。 – WarpedLogic

0

最初,你有語法錯誤,有像document.getElementByClassName()沒有inbuild功能(除非它的自定義功能),這麼清楚,即使你把你的警告在開始點擊它將無法正常工作。 此外,您正在檢查if(hasClickedWelcome == hasClickedWelcome)這是沒有意義的。使用:document.getElementsByClassName("menu-welcome");獲得具有該類的節點數組。然後,相應的其餘部分。

-1
//Onclick event 
$(".menu-welcome").click(function() { 
    // in jQuery "this" refers to the element that was selected in a callback 
    // it looks like toggleClass is really what you're looking for 
    $(this).toggleClass("menu-welcome-clicked"); 
}); 
+0

'這是'元素本身。如果你想訪問jQuery方法,你必須把它包裝爲'$(this)'。 – cpburnz

+0

這並沒有回答這個問題 - 雖然它確實切換了課程(正如預期的那樣),但您的答案並未設置「hasClickedWelcome」 –

+0

@AndyJones我相信這是一種更簡單的方式來完成用戶正在尋找的內容。似乎該變量只存在切換狀態。如果提問者可以提供關於使用情況的更多細節,那將是有用的。 – pclem12

相關問題