如何在jQuery/jS中使用if语句改变变量值

how to change variable values using if statement in jQuery/jS

本文关键字:if 语句 改变 变量值 jQuery jS      更新时间:2023-09-26

你好,我的程序有一些问题。我在程序的开头设置了一些变量,但是我想用if语句来改变它们。现在第一个if语句给了我我想要的结果,但第二个else if语句不起作用,变量采用默认值'0'

这是我的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>

谢谢!

Javascript中的变量是函数作用域。您不必在if, else-if块中使用var再次声明它们。

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

问题是你检查的是iPhone5c类而不是iphone5c类,注意大写p . JQuery是区分大小写的,所以你应该用相同的大写字母来写它们。

所以你的代码在变量上存储0,因为它没有通过if else条件。

此外,正如其他答案所说,由于作用域的关系,不需要在if中使用var重新声明变量。你应该把它删掉

我很抱歉,伙计们,我犯了一个愚蠢的错误,@nnnnnn给我指出了正确的方向。我的情况不一致,'iPhone5c'大写P在我的jQuery代码中,而'iPhone5c'小写P在我的html中。我修正了案例,现在可以正常工作了。另外,你们也是正确的,我不需要在if和else if情况下的每个变量前面都有"var"。谢谢你的帮助!感谢@nnnnnn找到解决方案:)