繁体   English   中英

如何在JavaScript中编写if else语句

[英]how to write an if else statement in javascript

任何人都可以在其他情况下帮助我....

编码

<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。基本情况1,但我只是想不通。 太感谢了。

这是不对的:

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/

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

首先,您没有任何价值:

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

不要忘记在每种情况下在switch循环后放置break语句。

弄清楚为什么某些事情不起作用

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

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

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

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

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

我们得出结论,这与编写相同: $(false) 从这里开始,很明显,此代码无法检查某个任意元素的值是否为2


除了其他答案外,请注意

开关/外壳的工作方式

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

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

在下面的示例中,执行printTo5Or8(1)不会使其在console.log(1)之后终止,而是“ printTo5Or8(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; } { statements; }后跟随switch(expression) 你什么都没有


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

您可能是指display(".name"); 目前,您的标签不起作用。

冗余码

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

形式参数列表(situation)已经声明了局部变量situation 没有必要声明它。

结论

我建议您投入一些精力来学习JavaScript作为一种语言。 了解JavaScript的工作方式将帮助您推理代码,并裁定永远无法工作的“不可能”代码。 没有很好地掌握编程语言或在这种情况下JavaScript是如何工作的,编程就好像将一些魔咒混在了一起,这些魔咒有时恰好可以实现您想要的功能,但是却经常出错。

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

我认为这段代码更干净:

<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>

一段优化的爱情:

$("#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");
    }
});

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

    <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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM