#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