【问题标题】:If Else statement in JavascriptJavascript 中的 If Else 语句
【发布时间】:2013-08-02 05:57:41
【问题描述】:

我在我的网站中创建了一个开关。它就像一个电灯开关。当人们点击它时,背景颜色和某些文本段落的颜色会切换为不同的颜色。我编写了下面的代码并成功完成了任务:

  $(".clickme").click(function () {      
     $('html').css('background-color', 'black');
     $('#top_nav a').css('color', '#ff7b00');
     $('.back_face').css('background-color', 'black');
     return false;
  });

但现在我想重新打开灯。我创建了一个名为 lighton 的变量,并将其设置为 0。我尝试使用 if else 语句来完成任务,但它不起作用。下面是我写的失败的代码:

<a href="" class="clickme">Click me</a>

<script>    
  $(".clickme").click(function () {    
  var lightoff = 0;   
  if (lightoff=0){    
      $('html').css('background-color', 'black');
      $('#top_nav a').css('color', '#ff7b00');
      $('.back_face').css('background-color', 'black');
      lightoff = 1;
      return false;    
 }else{

      $('html').css('background-color', 'white');
      $('#top_nav a').css('color', 'black');
      $('.back_face').css('background-color', 'white');
      lightoff = 0;
      return false;
   }
});

</script>

我最近才开始学习 JavaScript,并且检查了 JavaScript 条件语句的语法。所以我希望有人知道我的代码有什么问题。非常感谢。

【问题讨论】:

  • var lightoff = 0; 排除在您的click() 事件之外

标签: javascript jquery html css


【解决方案1】:

您需要使用if (lightoff==0){

= 是赋值运算符,而== 是比较运算符。

在条件中使用赋值运算符时,将评估分配的值,因此(lightoff=0) 将始终评估为0,然后将其转换为false。在条件中使用赋值运算符的最常见情况是在分配函数的返回值时,例如( lightoff = checkIfLightIsOff() )

【讨论】:

  • 好点Sekharan。 Javascript 很时髦,具有所有真实和虚假的“价值”。最初我打算对简单的示例说双等号是安全的,但考虑到 JS 的性质,我会从一开始就开始使用等号运算符。同样 asifrc,jQuery 是学习基础知识的好方法,但您有时需要知道幕后发生了什么。现在开始!
  • @Phix 在听说过 jquery 之前,我已经使用纯 JavaScript 超过 5 年了。我没有被冒犯或任何大声笑,只是好奇:我写的有没有什么东西促使你建议我更多地了解 javascript(或者我过于依赖 jQuery)?
  • 我的错,它是针对 OP 的。在我的手机上滚动不够高。我的错!
  • 我就是这么想的,哈哈。但我绝对同意:@Hold_My_Anger,考虑到时间的奢侈,你绝对应该“粗略”并在跳入 jQuery 之前使用纯 JavaScript。这通常会帮助您编写客户端脚本,并且在您尝试 Node.js 之类的东西时也很有帮助
【解决方案2】:

由于要在多次调用回调方法时使用lightoff的值,所以应该将其定义在处理程序方法的范围之外,以便多次调用该方法将共享同一个lightoff实例

正如@zzlalani 指出的= 运算符代表赋值,您需要的是比较器运算符==

应该是

var lightoff = 0;

$(".clickme").click(function () {

    if (lightoff==0){

        $('html').css('background-color', 'black');
        $('#top_nav a').css('color', '#ff7b00');
        $('.back_face').css('background-color', 'black');
        lightoff = 1;
        return false;

    }else{

        $('html').css('background-color', 'white');
        $('#top_nav a').css('color', 'black');
        $('.back_face').css('background-color', 'white');
        lightoff = 0;
        return false;
    }
});

【讨论】:

  • 条件应该是if (lightoff==0){而不是if (lightoff=0){你需要使用==两个等号
【解决方案3】:

我不是 Javascript 专家,但您似乎使用了“=”而不是“==”,这会将变量设置为 0 而不是比较它。

【讨论】:

    【解决方案4】:

    您应该使用===== 而不是=

    • = 是赋值运算符

    • == 等于 ie,
      x==8 错误
      x==5 真

    • === 完全等于(相等的值和相等的类型)即,
      x==="5" 假
      x===5 真

    其他一些情况:

    '' == '0'           // false
    0 == ''             // true
    0 == '0'            // true
    
    false == 'false'    // false
    false == '0'        // true
    
    false == undefined  // false
    false == null       // false
    null == undefined   // true
    

    【讨论】:

      【解决方案5】:

      另一种方法是toggle 事件

      $(".clickme").toggle(function () {    
          $('html').css('background-color', 'black');
          $('#top_nav a').css('color', '#ff7b00');
          $('.back_face').css('background-color', 'black');
          return false;    
      }, function() {
          $('html').css('background-color', 'white');
          $('#top_nav a').css('color', 'black');
          $('.back_face').css('background-color', 'white');
          return false;
      });
      

      【讨论】:

        猜你喜欢
        • 2021-09-11
        • 2016-06-21
        • 2015-05-16
        • 2021-11-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-15
        • 2018-01-09
        相关资源
        最近更新 更多