关于if else的小编程混淆和否则如果在jquery中

时间:2010-09-21 17:27:50

标签: javascript jquery jquery-selectors

假设我有一个包含两个文本框的表格行,我想根据屏幕和一些数组值来操作它们

                            <tr id ="myrow" style="display:none">
    <td>
      test1<input type="text" name="some" value ="some">
      test2<input type="text" name="test2" value ="test2">
    </td>
    </tr>

我正在为所有屏幕使用相同的表单。所有屏幕都会呈现相同的表单,因此iam具有隐藏的价值iam基于隐藏操作事物

  var somearr = ['AAA','BBB','CCC','DDD'];
  //ready function 
  if ($("#hi_showelements").attr('value')=="screen1"){
      $("#firsttd").removeAttr('style'); //we have the td but not shown above

  }
  else if($("#hi_showelements").attr('value')=="screen2"){
     $("#myrow").hide();

  else if($("#hi_showelements").attr('value')=="screen3"){
      $("#myrow").hide();

  }
  else if ($("#hi_showelements").attr('value')=="screen4"){
   $("#myrow").hide();

  }

  if($.inArray(somecode,somearr)=='-1'){
     $("#myrow").hide();

   }
  else{
   $("#myrow").show();
  }

上面的行“myrow”正确隐藏在scrren1,screen2,screen3,screen4 ,.    但我的问题是我无法隐藏在同一屏幕中的行    说“somecode”值是否为“AAA”,它出现在“somearr”中    数组并且不等于“-1”并且显示“#myrow”。    如果“somearr”中出现“somecode”,我怎么能隐藏这一行

1 个答案:

答案 0 :(得分:1)

你想要做什么 已经了。如果不是,则应首先清理代码,以便更容易发现错误。

首先,我建议用if替换第一批switch语句:

switch ($("#hi_showelements").attr('value')) {
  case 'screen1':
    $("#firsttd").removeAttr('style');
    break;

  case 'screen2':
  case 'screen3':
  case 'screen4':
    $("#myrow").hide();
    break;
}

接下来,inArray返回一个整数,而不是字符串。仅仅因为JavaScript允许你将字符串与整数进行比较并不意味着它是个好主意。使用这样的东西:

if($.inArray(somecode,somearr) == -1)
   $("#myrow").hide();
else
   $("#myrow").show();

如果仍然无效,可能somecode未正确设置。我们需要看看你定义它的位置。