Как использовать переменную counter в условии if?

#javascript #jquery #html

#javascript #jquery #HTML

Вопрос:

Я хочу использовать переменную counter в условии IF..Я пытался, но это не работает.Пожалуйста, помогите мне с правильным кодом .. код:

 var ChForAtn=0;
if(arrayAtnd[ChForAtn]=="Name")
{                
    alert("Name");
    if(document.forms[7].ckbx' ChForAtn '.checked==true)
    {
        alert('Name added and checked also');
    }
    ChForAtn  ;
}
  

Ответ №1:

 var ChForAtn=0;  <--- Variable declared as 0
if(arrayAtnd[ChForAtn]=="Name")
{                
    alert("Name");
    if(document.forms[7].ckbx' ChForAtn '.checked==true) <-- You have your concatenation wrong.
    {
        alert('Name added and checked also');
    }
    ChForAtn  ; <--- Variable incremented
}
  

Прежде всего, вы должны опубликовать свой цикл. Опубликованный вами фрагмент кода не содержит цикла.

Единственная увеличиваемая переменная, которая у вас есть в этом коде, сбрасывается в верхней части кода, что не имеет особого смысла для этого фрагмента.

Редактировать

Следующее не будет работать, потому что вы перепутали конкатенацию

 document.forms[7].ckbx' ChForAtn '.checked==true
  

Я не слишком хорошо разбираюсь в JS, но если вы пытаетесь создать переменную variable, как в PHP, вам придется использовать что-то вроде eval() . Я знаю, что вы можете получить к ней доступ через window[] , но в данном случае это может быть невозможно.

Решение с eval()

 if (eval('document.forms[7].ckbx'   ChForAtn   '.checked') == true) {
  //code
}
  

ОБРАТИТЕ ВНИМАНИЕ, что есть веские причины, по которым вам не следует использовать eval() . Посмотрите здесь для получения дополнительной информации:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/eval#Don.27t_use_eval.21

Однако, учитывая ваш вариант использования, я действительно не вижу способа обойти это. Я бы приветствовал альтернативные предложения с других плакатов.

ПРАВКА2

Как указывает @nickf в комментариях, вы можете сделать то же самое, вызвав

 if (document.forms[7]['ckbx'   ChForAtn].checked == true) {
   //code
}
  

Предостережение для других, не используйте eval() там, где этого можно избежать 🙂

Комментарии:

1. @JohnP-Я не разочарован циклом или каким-либо потоком условия if .. у меня просто какая-то ошибка в «if (document.forms [7].ckbx’ ChForAtn ‘.checked == true)»…. это проверка условия … я хочу исправить это.

2. @vinay, ваш код конкатенации был неправильным. Я опубликовал решение, которое использует eval() использовать с осторожностью.

3. -1 для eval . Извините, но использовать eval здесь — очень плохой совет.

4. Должно быть: document.forms[7]['ckbx' ChForAtn].checked

5. @nickf, да, я знаю! Я отредактировал свой пост так же, как вы комментировали. Можно ли получить доступ к элементам dom через массив? Или любая другая альтернатива?

Ответ №2:

Используйте цикл for в условии if.

Комментарии:

1. @Faheem- что-то не так в «if(document.forms[7].ckbx’ ChForAtn ‘.checked ==true)» в этой части.. Я хочу исправить этот … цикл, и все это более поздняя часть

2. Вы не хотите выполнять цикл внутри регистра, вы хотите выполнять цикл вне его. В противном случае счетчик не используется

3. аттиус, он хочет использовать counter в стороне от условия if