1

Тема: JS: чекбоксы и массив

//блок чтения-записи чекбоксов category в массив
var stopped=loadding=0;  tota=selested["category"].length ;
for (i=0; i<tota; i++)
{
   if(selested.category[i].checked==false){++stopped;}
   else{xcategory[i] = (document.forms["selested"].category[i].value); ++loadding;}
}
xnkmassiv = xcategory.length;
alert("loadding= "+loadding+" stopped= "+stopped+' всего = '+tota+" ячеек в массиве= "+xnkmassiv+" данные: "+xcategory);

//блок чтения-записи чекбоксов zeh в массив
var stopped=loadding=0;  tota=selested["zeh"].length ;
for (i=0; i<tota; i++)
{
   if(selested.zeh[i].checked==false){++stopped;}
   else{xzeh[i] = (document.forms["selested"].zeh[i].value); ++loadding;}
}
xn1massiv= xzeh.length;
alert("loadding= "+loadding+" stopped= "+stopped+' всего = '+tota+" ячеек в массиве= "+xn1massiv+" данные: "+xzeh);

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

//проба
uuu("category", category, xcategory); //вызов функции

function uuu(a, b, c) {
b11= c11=new Array();
b11=b; c11=c;
var stopped=loadding=0;  tota=selested[a].length ;
for (i=0; i<tota; i++)
{
   if(selested.b11[i].checked==false){++stopped;}
   else{c11[i] = (document.forms["selested"].c11[i].value); ++loadding;}
}
xnkmassiv = c11.length;
alert("loadding= "+loadding+" stopped= "+stopped+' всего = '+tota+" ячеек в массиве= "+xnkmassiv+" данные: "+c11);
}//конец пробы

На экране сообщение = category- определение отсутствует.
Подскажите, пожалуйста, в чем моя ошибка, как переопределить имена массивов...

Чекбоксы сделаны так:

  <input type="checkbox"
       name="total"
     value="checkbox" onClick="checkAll(this.form,'category',this.checked)"><b>Отметить все</b><br>
  <INPUT name=category
         type="checkbox"
         value="AWW" tabindex="1">А&nbsp;-&nbsp;Автоматизация<br>
  <INPUT name=category
         type="checkbox"
         value="ARW" tabindex="2">АР&nbsp;-&nbsp;Архитектурные&nbsp;решения<br>
  <INPUT name=category
         type="checkbox"
         value="ASW" tabindex="3">АС&nbsp;-&nbsp;Архитектурно-стоительные&nbsp;решения<br>

...
Любители построили Ковчег, а профессионалы - Титаник.

2

Re: JS: чекбоксы и массив

Ох... Ну и описание у Вас.
Правильно ли я понял, что Вам нужен глобальный checkbox, выставленный флажок которого будет выставлять/снимать флажок на всех остальных?

( 2 * b ) || ! ( 2 * b )

3 (изменено: stir, 2011-02-03 06:39:33)

Re: JS: чекбоксы и массив

Нет. Такая функция уже есть у меня, она в data3.js лежит...
Чекбоксы я привел так..на всякий случай, если вопросы возникнут. С ними проблемм нет, а вот с функцией -есть, не пишется рабочая, блин (знаний и опыта нехватает пока)..
Ну ведь глупо повторять один и тот же код "блок чтения чекбоксов в массив (с циклом)" в странице! или нет, не глупо?
Хотел заменить этот повторяющийся код на функцию uuu("category", category, xcategory), нерабочий код которой я привел здесь..
Впрос тот же - что я напутал и что надо сделать, чтобы функция заработала...

Пояснения к переменным нужны? stopped - кол-во неотмеченных чекбоксов (пропущенных эл. в массиве), loadding - -"- отмеченные, tota - размер массива с чекбоксами, xcategory или подобный массив - для хранения выбранных чекбоксов (нужно далее для осуществления поиска с помощью регвыр.), xnkmassiv и xn1massiv - для проверки условия выбора хотя бы 1 чекбокса в массиве чекбоксов (прим. в конце перебора всех массивов). Я с радостью мог бы выслать весь свой код, но "аси" у вас нет, да и на сообщение мое к вам через форму форума я ответ не получил..я все понимаю...
просто, чтоб мне не киснуть, а продуктивно изучить этот скрипт нужны советы при исполнении кода, т.е. практики, а обратиться не к кому, никто из знакомых с js не дружит. Эээх..б, это платное образование, поступил бы в свое время на ИИТ, а не АПХП АлтГТУ, или вообще в НЭТИ Новосибирска, и не задавал бы глупых вопросов при самообразовании..еще в школе учился в спецклассе с углубленными предметами (1991г.) - математикой и физикой + информатика, первый выпуск , в инстит-те вышку знал на отлично..

ОФФ: хочу личное общение через скайп или асю с вами + есть 1 идея, это возможно в свободное время??

Вот одна из функций (повторяющейся у меня в разных страницах), помещенная в data3.js

// функция выбора всех  checkbox-ов в форме
function checkAll(oForm, cbName, checked)
{
for (var i=0; i < oForm[cbName].length; i++) oForm[cbName][i].checked = checked;
}
Любители построили Ковчег, а профессионалы - Титаник.

4 (изменено: stir, 2011-02-03 08:33:40)

Re: JS: чекбоксы и массив

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

//блок чтения-записи чекбоксов category в массив
var stopped=j=0;  tota=selested["category"].length ;
for (i=0; i<tota; i++)
{
   if(selested.category[i].checked==false){++stopped;}
   else{xcategory[j] = (document.forms["selested"].category[i].value); ++j;}
}
xnkmassiv = xcategory.length;
//alert("loadding= "+j +" stopped= "+stopped+' всего = '+tota+" ячеек в массиве= "+xnkmassiv+" данные: "+xcategory);
Любители построили Ковчег, а профессионалы - Титаник.

5

Re: JS: чекбоксы и массив

Вы так много пишете слов, что становится сложно понять суть. Возможно Вы хотели этого:

// собрать коллекцию ВСЕХ html-элементов, у каторых атрибут name=category
var list = document.getElementsByName('category');

если атрибут name=cateogry выставлен только у input type=checkbox, то в переменной list - искомое. Если из этой коллекции надо выбрать определенные элементы, то надо пройтись циклом и отфильтровать нужное, например:

// Выбрать все элементы с выставленными флажками
var result = [];
for (var i = 0; i < list.length; i++) {
    if ( list[i].checked ) {
        result.push(list[i]);
    }
}

Если критериев отбора несколько, можно создать несколько отдельных функций, можно все сделать в одной.

( 2 * b ) || ! ( 2 * b )

6 (изменено: stir, 2011-02-03 14:43:46)

Re: JS: чекбоксы и массив

при выводе list  так:  alert("list= " + list);
сообщает, что list = [object]
что в 1 варианте, что и во 2..


может все дело в форме или ее начале, т.е. она единая и ИМЕНОВАННАЯ = selested?

<FORM name="selested" enctype=text>
<table width=100%><!-- Таблица выбора -->
<tr width=100%><!-- Строка 1 -->
    
  <td width=69% valign=top><!-- Строка 1, колонка 1 -->
  <FIELDSET>
  <LEGEND>Категория по ГОСТ Р21.1101-2009</LEGEND>
  <input type="checkbox"
       name="total"
     value="checkbox" onClick="checkAll(this.form,'category',this.checked)"><b>Отметить все</b><br>
  <INPUT name=category
         type="checkbox"
         value="AWW" tabindex="1">А&nbsp;-&nbsp;Автоматизация<br>
Любители построили Ковчег, а профессионалы - Титаник.

7

Re: JS: чекбоксы и массив

list - коллекция, не массив. Хотя коллекции имеют "интерфейс", сходный с массивами, но сходство на этом и заканчивается. Вам зачем список элементов нужен? Чтобы алертом выводить или что то полезное делать с его элементами?

( 2 * b ) || ! ( 2 * b )

8 (изменено: stir, 2011-02-04 07:54:05)

Re: JS: чекбоксы и массив

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

Любители построили Ковчег, а профессионалы - Титаник.