2015-02-23 157 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