【问题标题】:Display a true / false as a yes / no with if / else statment jquery使用 if / else 语句 jquery 将真 / 假显示为是 / 否
【发布时间】:2023-03-29 10:46:01
【问题描述】:

我想将用户状态显示为“活动:是”。我不知道如何编写 if else 语句。我试过自己写,但它仍然显示“活动:1”我试过自己做一个 if else 语句,但它不起作用。

<script>
    let jUser = {
        "name":"A",
        "lastName":"B",
        "active": 1
    }

    $('#lblName').text(jUser.name)
    $('#lblLastName').text(jUser.lastName)

    //if else statement here: 

    if ('active' == '1') {
        $('#lblActive').text("yes")  
    }
    else if ('active' == '0') {
        $('#lblActive').text("yes") 
    }

    $('#lblActive').text(jUser.active)

    $('.navlink').click( function(){ 
        $('.navlink').removeClass('active')                 
        $('.page').hide() 
        $(this).addClass('active')                          
        let sPageToShow = $(this).attr('data-showPage')     
        $('#'+sPageToShow).show()
    })

</script>

现在输出是我写的任何内容,但我想将其显示为是或否。

谢谢

【问题讨论】:

  • 您正在将字符串(活动)与数字字符串(1/0)进行比较 - 这永远不会满足条件。您需要实际获得活动值 - 不要使用字符串
  • 首先您要比较的是字符串,而不是变量中的值。其次,if 条件的双方(如果有效)做同样的事情......
  • 在 if 中写 jUser.active == 1 有什么问题?而else if中对应的东西呢?
  • if(jUser.active === 1 || jUser.active === 0)

标签: javascript jquery json frontend


【解决方案1】:

这里有几个问题:

  • 您正在比较字符串文字值 active1,而不是任何变量中保存的值
  • activejUser 的属性,所以它应该是 jUser.active
  • jUser.active 保存一个整数,而不是字符串。虽然隐式比较会起作用,但最好比较相同的类型。
  • 您覆盖了最后一条语句中的 text(),因此 if 是多余的
  • if 条件的两边做同样的事情

还请注意,如果 active 只有两种可能的状态(在您的示例中可能是 10),那么将其作为布尔值 true/false 会更有意义。

考虑到所有这些,您可以通过一个简单的三元表达式来实现您的目标:

let jUser = {
  "name": "A",
  "lastName": "B",
  "active": 1
}

$('#lblActive').text(jUser.active === 1 ? 'Yes' : 'No');

/*
// the same logic in a full 'if' condition:
if (jUser.active === 1) {
  $('#lblActive').text('Yes');
} else {
  $('#lblActive').text('No');
}
*/
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Active: <label id="lblActive"></label>

【讨论】:

  • 谢谢 - 我是新手,所以我试图理解逻辑。它对解释有很大帮助。它有效!
  • 没问题。如果有帮助,请不要忘记接受答案。
  • 我做了,但我收到了这样的反馈:“声望低于 15 人的投票会被记录,但不要更改公开显示的帖子分数”
【解决方案2】:

您无法通过将变量括在引号'' 中来访问它。而activejUser 内部,您需要使用jUser.active 或jUser["active"] 来访问它。并在 if 块之后删除 $('#lblActive').text(jUser.active)

if (jUser.active === 1) {
    $('#lblActive').text("yes")  
}
if (jUser.active === 0) {
    $('#lblActive').text("no") 
}

【讨论】:

    【解决方案3】:

    您正在将一个字符串与一个数字进行比较,这永远不会做任何事情。您需要将jUser对象上的active属性与数字1进行比较,然后设置一些“是”或“否”的显示文本

    let jUser = {
        "name":"A",
        "lastName":"B",
        "active": 1
    }
    
    $('#lblName').text(jUser.name)
    $('#lblLastName').text(jUser.lastName)
    
    let activeStatus = jUser.active === 1 ? "yes" : "no";
    $('#lblActive').text(activeStatus);
    
    $('.navlink').click( function(){ 
        $('.navlink').removeClass('active')                 
        $('.page').hide() 
        $(this).addClass('active')                          
        let sPageToShow = $(this).attr('data-showPage')     
        $('#'+sPageToShow).show()
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多