2016-07-05 257 views
0

您好,我在使用我的程序时遇到了一些麻烦。我在我的程序开始时设置了一些变量,但是我想用if语句改变它们。眼下的第一个if语句给我我想要的结果,但第二个else if语句可心不是工作和变量所取的“0”如何在jQuery/jS中使用if语句更改变量值

这里的默认值是我的jQuery代码的开始:

jQuery(".repair-grid-item1").click(function(){ 
     jQuery(".repair-grid-item1 i").toggle(); 
     jQuery(".repair-grid-item1").toggleClass("grid-active"); 
     jQuery('.repair-grid-item1').gg(); 
    }); 

    (function($){ 
    $.fn.gg = function() { 
     var price = 0; 

     var one = 0; 
     var two = 0; 
     var three = 0; 
     var four = 0; 
     var five = 0; 
     var six = 0; 

     // *** this code block is working, returning correct values *** 
     if (jQuery(".repair-grid-item").hasClass("iPhone5")) { 
     var one = 85; 
     var two = 70; 
     var three = 75; 
     var four = 65; 
     var five = 75; 
     var six = 80; 
     } 


     // *** this code block isnt working, returning default values of 0 *** 
     else if (jQuery(".repair-grid-item").hasClass("iPhone5c")) { 
     var one = 85; 
     var two = 70; 
     var three = 75; 
     var four = 65; 
     var five = 75; 
     var six = 80; 
     } 

     //one only 
     if (jQuery(".repair-grid-item1").hasClass("grid-active") && 
      !jQuery(".repair-grid-item2").hasClass("grid-active") && 
      !jQuery(".repair-grid-item3").hasClass("grid-active") && 
      !jQuery(".repair-grid-item4").hasClass("grid-active") && 
      !jQuery(".repair-grid-item5").hasClass("grid-active") && 
      !jQuery(".repair-grid-item6").hasClass("grid-active")) 
     { 
      price = one; 
      document.getElementById("total-price").innerHTML = price; 
      localStorage.setItem("sum", price); 
     } 
    }; 
})(jQuery); 

这里是我的html一小段代码(这是iPhone5的页面)

  <div class="repair-grid-item repair-grid-item1 iphone5"> 
      <h3>Screen Repair</h3> 
      <i class="fa fa-check-circle-o fa-2x" aria-hidden="true"></i> 
      </div> 

iphone5c页:

  <div class="repair-grid-item repair-grid-item1 iphone5c"> 
      <h3>Screen Repair</h3> 
      <i class="fa fa-check-circle-o fa-2x" aria-hidden="true"></i> 
      </div> 

谢谢!

+1

这可能有助于“Javascript可变范围”http://stackoverflow.com/a/500459/2008111请参阅示例1 - 3 – caramba

+1

也许你需要[匹配案例]( http://stackoverflow.com/a/2580031/615754)你的选择器与HTML中的类?有更多的代码比显示的更多吗?除了'one',你永远不会使用任何这些变量的值。 – nnnnnn

+0

@nnnnnn我试过你的解决方案,它的工作!谢谢! –

回答

0

问题是,您正在检查类iPhone5c而不是类iphone5c,请注意大写P.JQuery区分大小写,因此您应该使用相同的大写字母将其写入。

因此,您的代码在变量上存储0,因为它不通过if else条件。

此外,正如其他答案所述,由于范围的原因,变量不需要在if内使用var进行重新声明。你应该删除它。

+0

谢谢你,这是问题! –

1

Javascript中的变量具有函数作用域。您不必在ifelse-if区块内使用var再次声明它们。

编辑:正如其他人指出的,问题是与css类iphone5c的情况。您正在检查iPhone5c

+0

是的,但这并不能解释OP询问的行为。重新宣布它们不会重置它们。 – nnnnnn

+0

是的,没错。其他人指出,问题在于班级的情况。现在编辑我的答案。谢谢! – rkrishnan

0

对不起,我犯了一个愚蠢的错误,@nnnnnn指出我在正确的方向。我的情况并不一致,'iPhone5c'大写P在我的jQuery代码中,'iphone5c'小写字母p在我的html中。我纠正了案件,现在它工作正常。同样你们也是正确的,我不需要在if和else情况下每个可用的“var”infront。感谢您的帮助!并感谢@nnnnnn寻找解决方案:)