【问题标题】:how to write an if else statement in javascript如何在javascript中编写if else语句
【发布时间】:2023-03-24 00:57:01
【问题描述】:

谁能帮我解决这个 if else 语句....

编码

<script>
$("#id_add_select").change(function(){
    if($("#id_add_select" == "2")){
        handler(1)
    } else {
        handler(2) 
    } 
}); 


function handler(situation){
var situation = situation;
    switch (situation)
    case 1:
          display: (".name")
          display: (".address")
    case 2:
          disable: (".age")
          disable: (".email")   
}
</script>

html编码

<html>
 ------

<select name="add_select" id="id_add_select">
        <option value="1">working</option>
        <option value="2">not working</option>
        <option value="3">retired</option>
</select>

 ------- 

我的情况是,如果我选择 2“不工作”,那么它将显示案例 1。否则将显示案例 2。基本的,但我就是想不通。太感谢了。

【问题讨论】:

  • 你知道你必须用 $(document).ready(function(){...}); 包围 js 代码才能让它与 jQuery 一起工作,对吧?

标签: javascript django-templates


【解决方案1】:
    <html>
    <head>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>


    <script>
    $(document).ready(function(){
    $("p").click(function(){
    $(this).hide();
    });

    $("#id_add_select").change(function(){

        if($(this).val() == "2")
            handler(1)
         else 
            handler(2) 
    });  
    });
     function handler(situation)
    {
    switch (situation){
    case 1:
     alert(situation);
      break;
    case 2:
      alert(situation);
       break;  
    }
    }
</script>
</head>

<body>
<p>If you click on me, I will disappear.</p>
<select name="add_select" id="id_add_select">
        <option value="1">working</option>
        <option value="2">not working</option>
        <option value="3">retired</option>
</select>
</body>

</html>

【讨论】:

    【解决方案2】:

    弄清楚为什么某些事情不能工作

    $("#id_add_select" == "2")
    

    显然,您打算检查所选元素的值是否为2。但是,不需要知道 jQuery 是如何工作的,很明显这是行不通的。

    为此,您只需将语句分解为其基本部分。

    我们有一个函数调用$(),我们通过传递一个参数来执行它:"#id_add_select" == "2"

    我们注意到,函数的参数完全独立于实际调用,所有函数调用都是如此。这意味着,比较的 result 将被传递。因为比较的两个操作数都是字面量,所以我们可以自己计算表达式并用一个常量替换它:"#id_add_select" == "2" 显然不相等,因此结果将是false

    我们得出结论,这与写作相同:$(false)。从这里应该很明显,这段代码无法检查某个任意元素是否具有值2


    除了其他答案,请注意

    开关/外壳的工作原理

    请注意,JavaScript 的 switch/case 语句具有失败行为。

    这意味着,一旦 case 子句由于其值与输入 x 匹配而被执行,它将执行它下面的所有代码,直到遇到 break; 语句以退出 switch/case 构造。

    在下面的例子中,执行printTo5Or8(1) 不会让它在console.log(1) 之后终止,而是“落入”console.log(2); 直到break; 语句!

    function printTo5Or8(x) {
        switch(x){
            case 1: 
                console.log(1); 
            case 2: 
                console.log(2);
            case 3: 
                console.log(3);
            case 4: 
                console.log(4);
            case 5: 
                console.log(5);
                break;
            case 6:
                console.log(6);
            case 7:
                console.log(7);
            case 8:
                console.log(8);
    
        }
    }
    printTo5Or8(1); // Prints 1 2 3 4 5
    printTo5Or8(3); // Prints 3 4 5
    printTo5Or8(6); // Prints 6 7 8
    printTo5Or8(7); // Prints 7 8
    

    无效语法

    switch/case 语句需要一个块:{ statements; } 跟在switch(expression) 之后!你没有。


    display: (".name")
    display: (".address")
    

    您可能是指display(".name");。目前,您的标签无济于事。

    冗余代码

    function handler(situation){
        var situation = situation; // <-- Remove
    

    形参列表(situation)已经声明了一个局部变量situation。不需要声明。

    结论

    我建议你投入一些精力来学习 JavaScript 作为一门语言。了解 JavaScript 是如何工作的将帮助你推理你的代码,并确定永远无法工作的“不可能”代码。如果没有很好地掌握编程语言或在这种情况下是 JavaScript 的工作原理,编程会感觉像是将一些魔法咒语混合在一起,这些咒语有时只是碰巧做你想做的事,但往往会出错。

    编程是一门精确的科学,而不是猜测和运气。

    【讨论】:

    • 很好的解释。我认为这是一个值得回答的问题。
    【解决方案3】:

    一段优化的爱情:

    $("#id_add_select").change(handler);
    
    var handler = function () {
        switch (this.value) {
            case 1:
                display(".name");
                display(".address");
                break;
            default:
                disable(".age");
                disable(".email");
                break;
        }
    };
    

    或者这样:

    $("#id_add_select").change(function () {
        switch (this.value) {
            case 1:
                display(".name");
                display(".address");
                break;
            default:
                disable(".age");
                disable(".email");
                break;
        }
    });
    

    或者这样:

    $("#id_add_select").change(function () {
        if (this.value === "1") {
            display(".name");
            display(".address");
        } else {
            disable(".age");
            disable(".email");
        }
    });
    

    也不要忘记你需要一个显示和禁用方法(但我猜你已经制作了它们,因为你的代码看起来像你有)

    【讨论】:

    • @NewbieDjango 您可以对有用的答案进行投票,而不是发布“谢谢”。评论在这里讨论帖子或提供建设性反馈,而不是说谢谢;)
    【解决方案4】:

    这是不对的:

    if($("#id_add_select" == "2")){
    

    你可能想做这样的事情:

    if($(this).val() == 2) {
    

    您可以对代码进行更多优化,但这应该是正确的方向:

    $("#id_add_select").change(function(){
        if($(this).val() == 2){
            handler(1)
        } else {
            handler(2) 
        } 
    });
    

    替代解决方案

    IMO,在您的情况下,使用带有函数的地图对象比使用 switch 语句更干净。所以我可能会做类似的事情:

    var actions = {
        1: function() {
            // first choice logic
        },
        2: function() {
            // second choice logic
        }
    };
    
    $("#id_add_select").change(function() {
        actions[this.value]();
    });
    

    演示:http://jsfiddle.net/PurjS/

    【讨论】:

    • 不要忘记冒号,以免将来编辑时可能出现问题。 (虽然这也没有冒号)
    • @Jan-StefanJanetzky 冒号?也许是分号?
    【解决方案5】:

    我认为这段代码更干净:

    <script>
    $("#id_add_select").change(function(){
    
    if( $(this).val() == "2"))
        handler(1)
     else 
        handler(2) 
    
    }); 
    
    
    function handler(situation){
    
    switch (situation){
    case 1:
          display: (".name");
          display: (".address");
          break;
    case 2:
          disable: (".age");
          disable: (".email");
           break;  
    }
    }
    </script>
    

    【讨论】:

      【解决方案6】:

      首先你没有得到任何价值:

        <script>
        $("#id_add_select").change(function(){
           if($("#id_add_select").val()==2){
           handler(1);
         } else {
           handler(2);
          } 
        }); 
        </script>
      

      不要忘记在 switch 循环中的每个 case 之后放置 break 语句。

      【讨论】:

      • 无关紧要。 javascript 为这两个自动插入分号
      【解决方案7】:

      if($("#id_add_select" == "2")){ => if($("#id_add_select").val() == "2"){

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-20
        • 1970-01-01
        • 2015-12-24
        • 2012-04-09
        • 2021-12-02
        • 1970-01-01
        • 1970-01-01
        • 2023-03-16
        相关资源
        最近更新 更多