如何在javascript中编写if else语句

时间:2012-10-15 10:48:08

标签: javascript django-templates

任何人都可以帮助我这个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.基本一个,但我只是无法搞清楚。太感谢了。

7 个答案:

答案 0 :(得分:3)

这是不对的:

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

你可能想做类似的事情:

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

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

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

替代解决方案

IMO,使用带有函数的map对象比在你的情况下使用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/

答案 1 :(得分:2)

if($("#id_add_select" == "2")){ =&gt; if($("#id_add_select").val() == "2"){

答案 2 :(得分:2)

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

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

不要忘记在切换循环中的每个案例之后放置break语句。

答案 3 :(得分:1)

弄清楚为什么某些事情无法发挥作用

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

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

为此,您只需要将声明分解为其基本部分。

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

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

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


除了其他答案,请注意

Switch / Case如何工作

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

这意味着,一旦执行了case子句,因为它的值与输入x匹配,它将执行它下面的所有代码,直到它到达break;语句退出{ {1}}构建。

在下面的示例中,执行switch/case不会在printTo5Or8(1)之后终止,而是会在console.log(1)语句之前“落到”console.log(2);! / p>

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)。没有必要申报。

结论

我建议你花些精力学习JavaScript作为一种语言。了解JavaScript的工作原理将有助于您推断出您的代码并规范无法使用的“不可能”的代码。如果没有很好地掌握编程语言或JavaScript在这种情况下的工作方式,那么编程就会把一些神奇的咒语混合在一起,这些咒语偶尔会发生在你想要的事情上,但往往会出错。

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

答案 4 :(得分:0)

我认为这段代码更干净:

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

答案 5 :(得分:0)

一段优化的爱情:

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

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

答案 6 :(得分:0)

    <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>
相关问题