2015-02-23 195 views
0

當我點擊藍色時,我的功能只能工作一次,如果我想再次變黑,它不再有效。功能只能工作一次

有什麼問題? 有沒有更簡單的方法來做到這一點?

我知道它的工作原理,但不是這樣。我會把價值轉到下一頁,我認爲它是最簡單的方法。

$(document).ready(function(){ 
    var x; 

    $("#dark").click(function(){ 
     dark(x); 
     entscheid (x); 
     }); 

    $("#blue").click(function(){ 
     blue(x); 
     entscheid (x); 
     }); 

    function blue(x){ 
     var x=0;  
    } 

    function dark(x){ 
     var x=1;  
    } 

    function entscheid(x){ 
     if(x==1){ 
      $("nav").attr("class","navigation-bar dark fixed-top"); 
      $(".dropdown-menu").attr("class","dropdown-menu dark"); 
      $(".heading").attr("class", "heading bg-dark fg-white"); 
      $(".container-middleBlue, .container-middleDark ").attr("class","container-middleDark"); 
     } 
     else{ 
      $("nav").attr("class","navigation-bar blue fixed-top"); 
      $(".dropdown-menu").attr("class","dropdown-menu blue"); 
      $(".heading").attr("class", "heading bg-blue fg-white"); 
      $(".container-middleDark, .container-middleBlue").attr("class","container-middleBlue"); 
     } 
    } 
    }) 
+1

爲什麼不使用'entscheid(1)'或'entscheid(0)'在點擊回調?的'x'在藍色和暗功能定義你是本地的這些功能,不一樣'x'你在onready函數中定義 – Hacketo 2015-02-23 19:21:20

+0

你可以將它粘貼在小提琴上嗎? – abaracedo 2015-02-23 19:22:09

+0

謝謝,現在我明白了:D – Caststupider 2015-02-23 20:18:33

回答

3

這些功能:

function blue(x){ 
    var x=0;  
} 

function dark(x){ 
    var x=1;  
} 

創建和修改局部變量,而不是你的高範圍的變量x。因爲x前面有var,所以它聲明瞭一個僅用於本函數的新變量。因此,當你調用entscheid (x);


我不明白爲什麼你使用這個變量的其他所有他們不改變要傳遞更高範圍的變量,你可以通過所需的值到你的entscheid函數並且根本不使用全局。

$("#dark").click(function(){ 
    entscheid(1); 
}); 

$("#blue").click(function(){ 
    entscheid(0); 
}); 
+0

哦,真的..謝謝:) – Caststupider 2015-02-23 20:17:14