Небольшая путаница в программировании относительно того, если еще и еще, если в JQuery - PullRequest
0 голосов
/ 21 сентября 2010

Допустим, у меня есть строка таблицы с двумя текстовыми полями, и я хочу управлять ими на основе экранов и некоторых значений массива

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

Я использую одну и ту же форму для всех экранов.рендерится для всех экранов, поэтому я имею скрытое значение, манипулируя вещами, основанными на скрытом

  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""показывается.Как я могу скрыть эту строку, если "somecode" присутствует в "somearr"

1 Ответ

1 голос
/ 21 сентября 2010

То, что вы пытаетесь сделать должно уже работать. Если это не так, вы должны сначала очистить свой код, чтобы было легче обнаружить ошибки.

Во-первых, я бы предложил заменить первую группу 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 настроен неправильно. Нам нужно увидеть, где вы это определили.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...