Изменяя JavaScript, установите флажки - PullRequest
1 голос
/ 28 февраля 2011

У меня есть этот код, который устанавливает все флажки:

<html>
<head>
<script language="javascript">
function checkAll(){
    for (var i=0;i<document.forms[0].elements.length;i++)
    {
        var e=document.forms[0].elements[i];
        if ((e.name != 'allbox') && (e.type=='checkbox'))
        {
            e.checked=document.forms[0].allbox.checked;
        }
    }
}
</script>
</head>

<body>
  <form>
    <input type="checkbox" value="on" name="allbox" onclick="checkAll();"/> Check all<br />
    <h3>Fruit</h3>
    <input type="checkbox" value="on" name="oranges" /> Oranges<br/>
    <input type="checkbox" value="on" name="bananas" /> Bananas<br/>
  </form>
</body>
</html>

Как мне изменить (и как это меняет логику) JavaScript, чтобы он работал в таком случае:

<body>
    <form id="menu">
       <input type="checkbox" value="on" name="allbox" onclick="checkAll();"/> Check all<br />
    </form>
    <h3>Fruit</h3>
    <form id="select">
       <input type="checkbox" value="on" name="oranges" /> Oranges<br/>
       <input type="checkbox" value="on" name="bananas" /> Bananas<br/>
    </form>
</body>

Ответы [ 2 ]

1 голос
/ 28 февраля 2011

Во втором примере есть две формы.

В вашем JavaScript у вас есть массив всех форм в документе: document.forms

Массивы в JavaScript начинаются с нуля, поэтому первая форма доступна с forms[0], вторая с forms[1] и т. Д.

Поскольку флажки в вашем примере находятся во второй форме, просто измените свой JavaScript, чтобы получить доступ к элементам во второй форме.

...
    for (var i=0;i<document.forms[1].elements.length;i++)
    {
        var e=document.forms[1].elements[i];
...

Или, поскольку ваша вторая форма имеет идентификатор, вы можете получить к нему доступ через идентификатор, например:

...
for(var i=0;i<document.getElementById("select").elements.length;i++)
{
    var e=document.getElementById("select").elements[i];
...
0 голосов
/ 28 февраля 2011

У вас есть две формы на второй странице, но ваш скрипт ссылается только на одну форму. Вам не нужно разбивать вашу форму на две части (судя по вашему нынешнему коду).

Но это возможно, если вы хотите сохранить две формы. Замените document.forms[0] на document.forms[1] везде в вашем скрипте.

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