2010-05-20 6 views
0

Моя проблема в том, что мои переменные не работают в JavaScript. все переменные нуждаются в именах без какого-либо символа в начале, это глупая вещь ... Во всяком случае, я пытаюсь создать функцию, которая «выбирает все флажки». Он не работает, поэтому я просмотрел источник/информацию о странице и выяснил, что переменные не менялись.Не удается получить доступ к элементам формы

это мой вход:

echo "<input onclick='checkAll(1);' type='checkbox' name='master'/><br/>"; 

Моя функция:

function checkAll(i) 
{ 
for(var i=1; i < <?php echo $num; ?>; i++) 
{ 
    if(document.demo.master[i].checked == true) 
    { 
    document.demo.message[i].checked = true; 
    } 
    else 
    { 
    document.demo.message[i].checked = false; 
    } 
} 
} 

да так, что это его. Я могу вам сказать, что я также пытался без <i> в: checkAll("i")


EDIT: каждый флажок для каждого сообщения есть этот код: echo "<input style='margin-left:-15px;margin-top:20px;' type='checkbox' name='message' value='$rid' /><br/>";


EDIT: а также, я попробовал код когда-то, и он работал на другом компьютере, но по моему это не работало. У нас был тот же самый код ... Это нормально? Что не так?

+0

это работает, когда есть одно сообщение в почтовом ящике, и когда я удалить все [I] и двутавровых в checkAll ("я"); – linkcool

+0

Как выглядит HTML для остальных ваших флажков? –

+0

Если вы создаете функцию, которая просто проверяет все флажки, тогда нет необходимости принимать переменную как входную.Кроме того, вы можете просто сделать это: if (document.demo.master [i] .checked) {document.demo.message [i] .checked = document.demo.master [i] .checked; } – yarmiganosca

ответ

0

Почему не просто:

function checkAll() 
{ 
for(var i=0; i < <?php echo $num; ?>; i++) 
{ 
    document.demo.message[i].checked = true; 
} 
} 

Если вы хотите, чтобы переключить текущие значения:

function toggleAll() 
{ 
for(var i=0; i < <?php echo $num; ?>; i++) 
{ 
    document.demo.message[i].checked = !document.demo.message[i].checked; 
} 
} 

Однако, это не кажется очень полезным на практике (если А проверяется и B и C не отмечены, как часто вы хотите, неконтролируемый, а B и C отмечены?). У меня бы просто были кнопки «Выбрать все» и «Отменить выбор».

Я удалил параметр, изменил i, чтобы начать с 0 (с индексом 0), и просто дал ему безоговорочно установить флажок. Прежде чем вы отложите его назад, чтобы он проверял его, если он уже был проверен, и наоборот. И вам не нужно устанавливать значение false в методе checkAll.

Кроме того, сделать Выбрать все кнопки:

echo "<input onclick='checkAll(1);' type='button' name='master' value='Select All' /><br/>"; 
+0

Я думаю, что его намерение состояло в том, чтобы установить флажок, который может переключать группу флажков. Вероятно, лучше назвать 'toggleAll' –

+0

yes или checkall, и если они уже проверены, снимите отметку с них – linkcool

0

Для этой задачи я использую силу prototype js lib

принять ваш флажок <input style='margin-left:-15px;margin-top:20px;' type='checkbox' name='message' value='$rid' />

добавить класс

<input class='checkall' style='margin-left:-15px;margin-top:20px;' type='checkbox' name='message' value='$rid' />

затем

$$('.checkall').each(function(item){ 
    item.checked = true; 
}); 

или если вы хотите проверить/отключенной опции

$$('.checkall').each(function(item){ 
    if(item.checked) 
    item.checked = false; 
    else 
    item.checked = true; 
}); 
Смежные вопросы