Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как передать массив в функцию
 
 автор: SlaDER   (31.12.2007 в 14:32)   письмо автору
 
 

Привет всем! С наступающим!

У меня такая проблема:

Есть строчки
- 1 строчка <input type='checkbox' name='use[]'>
- 2 строчка <input type='checkbox' name='use[]'>
- 3 строчка <input type='checkbox' name='use[]'>

И есть еще один checkbox, поставив галочку на котором мы скроем строчки у которых в checkbox стоит галочка.

Как скрыть я понимаю:


var sh;
if(document.getElementById(name).checked){
            sh='none';
        }else sh='';


Не могу передать массив use[];

   
 
 автор: SlaDER   (01.01.2008 в 15:59)   письмо автору
 
   для: SlaDER   (31.12.2007 в 14:32)
 

Все получилось уже у самго. Я вот только не могу понять вот, что:

Если я объявлю так:


<input type='checkbox' name='use[0]'>
<input type='checkbox' name='use[0]'>
<input type='checkbox' name='use[0]'>

<input type='checkbox' name='use[1]'>
<input type='checkbox' name='use[1]'>
<input type='checkbox' name='use[1]'>


Как мне их потом обработать:


document.getElementById('use').length


Не работает помогите пожалуйста!

   
 
 автор: sim5   (01.01.2008 в 16:47)   письмо автору
 
   для: SlaDER   (01.01.2008 в 15:59)
 

Если указано:

<input type='checkbox' name='use[]'> 
<input type='checkbox' name='use[]'> 
<input type='checkbox' name='use[]'>

то значит задан массив (для JS это будет имя 'use[]', для РНР 'use') с индексами от 0 до 2. Можно задать индексы массива явно:

<input type='checkbox' name='use[0]'> 
<input type='checkbox' name='use[1]'> 
<input type='checkbox' name='use[2]'>

То что вы написали, это полный абсурд - задавайте другое имя для другой группы. Кстати в первом посте, "сделать невидимым", это тоже абсурд - не может произвольная переменная не связанная с объектом делать его видимым/невидимым.

   
 
 автор: SlaDER   (01.01.2008 в 19:10)   письмо автору
 
   для: sim5   (01.01.2008 в 16:47)
 

Да не дописал код маленько для видимым не видемым:

вот так должно быть +:

document.getElementById(name).style.display = sh;

Но это не важно.

У меня есть массив группы checkbox с именами:

Например

1 группа

field_req[0]
field_req[0]
field_req[0]

2 группа

field_req[1]
field_req[1]
field_req[1]

Они создаются в PHP, мне нужно как-то обратится к ним и именно к нужной группе.

   
 
 автор: sim5   (01.01.2008 в 19:12)   письмо автору
 
   для: SlaDER   (01.01.2008 в 19:10)
 

Еще раз повторяю:
field_req[0]
field_req[0]
field_req[0]
это не массив, а полный абсурд, и чем он создан роли не играет.

   
 
 автор: SlaDER   (02.01.2008 в 10:46)   письмо автору
 
   для: sim5   (01.01.2008 в 19:12)
 

Уже помогли:

Теперь подсчитав количество групп радиокнопок, можно организовать цикл и получить каждую группу.


// Получаем группу
        function get_selects(name)
        {
              var selects = document.getElementsByTagName('input');
              var list = [];
              
              for (var i=0; i<selects.length; i++)
              {
                if (selects[i].name != name) continue;
                list.push(selects[i]);
              }
              return list;
        }

// Считаем количество групп

        function groups()
        {
              var radios = document.getElementsByTagName('input');
             var object = {};
              var count = 0;

              for (var i=0; i<radios.length; i++)
              {
                if (radios[i].type != 'radio') continue;
                if (object[radios[i].name]) continue;
                object[radios[i].name] = 1;
                count++;
              }
            return count;
        }

   
 
 автор: sim5   (02.01.2008 в 10:54)   письмо автору
 
   для: SlaDER   (02.01.2008 в 10:46)
 

Чем помогли? В вашем случае - либо группам радиокнопок нужно давать разные имена, либо использовать двумерный массив кнопок, иначе то что вы писали ранее, полная лажа.

   
 
 автор: bronenos   (02.01.2008 в 11:40)   письмо автору
 
   для: sim5   (02.01.2008 в 10:54)
 

я забыл там поправку сделать - в 1й ф-ии в цикле сделайте тоже проверку на type инпута

   
 
 автор: SlaDER   (02.01.2008 в 16:59)   письмо автору
 
   для: sim5   (02.01.2008 в 10:54)
 

А вот про двумерный массив можно поподробнее. т.е. объявлять как radio[][]?

   
 
 автор: sim5   (02.01.2008 в 17:31)   письмо автору
 
   для: SlaDER   (02.01.2008 в 16:59)
 

Вы ранее писали не о радиокнопках, а о чекбоксах. Для радиокнопок вообще не надо указывать что это массив, а просто указывается одно имя для группы радиокнопок. Но у них буде возможен выбор только одного значения, а вот для чекбоксов совсем другая картина. Вам что нужно?

   
 
 автор: SlaDER   (02.01.2008 в 19:05)   письмо автору
 
   для: sim5   (02.01.2008 в 17:31)
 

У меня уже получилось, то что я хотел. А именно чтобы были группы радиокнопок с одним именем. Но в моей реализации все равно получается, что имена у них разные.

Я просто хочу узнать можно ли как-то делать двумерный массив радиокнопок?

   
 
 автор: sim5   (02.01.2008 в 19:14)   письмо автору
 
   для: SlaDER   (02.01.2008 в 19:05)
 

Для радиокнопок достаточно прописать так, как вы делали для чекбоксов:

<FORM ACTION="" METHOD="post">
<INPUT TYPE="radio" NAME="as[0]" VALUE="1">
<INPUT TYPE="radio" NAME="as[0]" VALUE="2">
<INPUT TYPE="radio" NAME="as[0]" VALUE="3">
<INPUT TYPE="radio" NAME="as[1]" VALUE="11">
<INPUT TYPE="radio" NAME="as[1]" VALUE="12">
<INPUT TYPE="radio" NAME="as[1]" VALUE="13">
<INPUT TYPE="submit" VALUE="GO">
</FORM>
<?
if (isset($_POST)) {
print_r($_POST);
}
?>

   
 
 автор: SlaDER   (03.01.2008 в 12:30)   письмо автору
 
   для: sim5   (02.01.2008 в 19:14)
 

Вы обрабатываете это в PHP, а как это в js обработать?

   
 
 автор: sim5   (03.01.2008 в 12:55)   письмо автору
 
   для: SlaDER   (03.01.2008 в 12:30)
 

А что вам надо в JS обработать? В конечном итоге ведь все на сервер уйдет, там ведь не JS принимать будет. РНР я привел для того, чтобы вы сравнили. Отпавьте это на сервер и посмотрите полученный массив, затем замените типы полей на чекбоксы, выберите два чекбокса в любой из групп - теперь посмотрите, что вы получите на сервере. Вот об этом я вам говорил ранее.

   
 
 автор: SlaDER   (03.01.2008 в 13:50)   письмо автору
 
   для: sim5   (03.01.2008 в 12:55)
 

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

   
 
 автор: sim5   (03.01.2008 в 13:52)   письмо автору
 
   для: SlaDER   (03.01.2008 в 13:50)
 

Если честно, ничего не понял.

   
 
 автор: SlaDER   (03.01.2008 в 19:35)   письмо автору
 
   для: sim5   (03.01.2008 в 13:52)
 

Представьте таблицу в которой несколько столбцов и много строк.
В каждой строке группа радиокнопок и в каждой группе выбрана одна радиокнопка (ну т.е. "нажата").

Над таблицей есть select с выбором:
- Показать все
- Нажата 1 радиокнопка в группе
- Нажата 2 радиокнопка в группе
- Нажата 3 радиокнопка в группе

В зависимости от выбора, на экране скрываются нужные строчки.

Пользователь может добавлять строчки и по нажатию кнопки все данные таблицы (включая и выбранные пользоватлем радиокнопки) заносятся в БД

Теперь понятно, что я мне нужно было?

   
 
 автор: sim5   (03.01.2008 в 22:45)   письмо автору
 
   для: SlaDER   (03.01.2008 в 19:35)
 

Понятно, вы в шахматы играете. :)

   
 
 автор: bronenos   (04.01.2008 в 17:10)   письмо автору
 
   для: sim5   (03.01.2008 в 22:45)
 

шашки )

   
 
 автор: SlaDER   (04.01.2008 в 18:49)   письмо автору
 
   для: bronenos   (04.01.2008 в 17:10)
 

В шахматы играю и в шашки тоже)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования