【问题标题】:Javascript - if statement not working?Javascript - 如果语句不起作用?
【发布时间】:2009-11-19 00:53:34
【问题描述】:

我正在尝试根据 url 将类设置为活动。我正在尝试使用下面的代码,但在每种情况下,它都会激活第二个选项卡的活动类。

var pathname = window.location.pathname;

if(pathname = '/learn/subsection2') {
            $("ul.tabs li:eq(1)").addClass("active").show(); //Activate second tab
            $(".tab_content:eq(1)").show(); //Show second tab content
    } else {
            $("ul.tabs li:first").addClass("active").show(); //Activate first tab
            $(".tab_content:first").show(); //Show first tab content
    }

【问题讨论】:

    标签: javascript jquery class set if-statement


    【解决方案1】:

    您在 if 语句中分配而不是检查相等性。

    if(pathname == '/learn/subsection2') {
    ...
    

    【讨论】:

    • 哦,犯罪...这是漫长而漫长的一天... :) 谢谢。 ::: 不好意思地咧嘴一笑,然后躲在岩石下 :::
    • 是的,您是在分配,而不是比较路径名和字符串的值。
    【解决方案2】:
    if(pathname = '/learn/subsection2') { // assignment
    if(pathname == '/learn/subsection2') { // test for equality
    if(pathname === '/learn/subsection2') { // test for equality without type coercion
    

    【讨论】:

      【解决方案3】:

      您使用的是= 而不是==,这是一个常见的编程错误。 = 是赋值,== 是比较。

      if (pathname == '/lean/subsection2') { // ...
      

      当使用= 时,它会将字符串/lean/subsection2 分配给变量pathname 并且 将其评估为布尔值,这始终为真(它'd 必须是 false 或 undefined),所以它总是采用肯定条件块。

      【讨论】:

        【解决方案4】:

        if 语句中使用== 而不是=

        【讨论】:

          【解决方案5】:

          您在比较中使用了= 而不是=====。这就是为什么许多程序员会改变语句,从而引发错误而不是无意中运行代码……这是一个非常常见的错误!

          这里是同一ifg 语句切换的示例。如果您使用这种格式,但犯了同样的错误,它会抛出一个错误,这会帮助您更快地找到它:

          if('/learn/subsection2' == pathname){ ... }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-12-26
            • 2013-06-20
            • 2013-09-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多