поясните кусок кода из phpMyAdmin 2.6.0-pl3

usascha

Новичок
поясните кусок кода из phpMyAdmin 2.6.0-pl3

Взялся прикрутить функцию обработки выбора checkbox'ов.
Аналогичная js-функция есть в PMA:
PHP:
function setCheckboxes(the_form, do_check) {
	var elts = (typeof(document.forms[the_form].elements['selected_db[]']) != 'undefined') ? document.forms[the_form].elements['selected_db[]'] : (typeof(document.forms[the_form].elements['selected_tbl[]']) != 'undefined') ? document.forms[the_form].elements['selected_tbl[]'] : document.forms[the_form].elements['selected_fld[]'];
	var elts_cnt  = (typeof(elts.length) != 'undefined') ? elts.length : 0;

	if (elts_cnt) {
		for (var i = 0; i < elts_cnt; i++) {
			elts[i].checked = do_check;
		}
	} else {
		elts.checked        = do_check;
	}
return true;
}
Если кто-то с этим разбирался, поясните смысл синтаксиса переменной var elts. В частности, не понимаю откуда берется "the_form" и "selected_tbl[]". Пересмотрел поиском код всех файлов, но так и не нашел.

Спасибо.
 

Кром

Новичок
В самой переменной используется тернарный оператор.
"the_form" берерется при вызова функции. Искать нужно, естественно не "the_form", а саму функцию.
selected_db - массив, который нужно искать в форме "the_form".
Короче, пиши alert(the_form) в начале функции, после чего ищи на странице свою форму.
 

SelenIT

IT-лунатик :)
the_form - первый параметр, который передается ф-ции при вызове (по смыслу - имя формы).

'selected_fld[]' - просто имя чекбокса в форме

Переменная elts устанавливается с помощью вложенного тернарного оператора:

PHP:
elts = (условие) ? значение, если условие истинно : значение, если условие ложно
В данном случае сначала проверяется существование элемента с именем 'selected_db[]', если его нет - элемента 'selected_tbl[]', и если и его нет - 'selected_fld[]'. Первый из найденных элементов присваивается переменной.



p.s. double frag :)
 

Frol

Новичок
сколько минут автор думал перед тем, как поместить тему по JS в PHP форум?
 

usascha

Новичок
Кром
alert(the_form) выдает: "the_form - определение отсутствует".
Скорее всего я не взял еще какую-то из функций из родного кода. Вы написали, что нужно искать функцию: какую имеется ввиду?

frol
PMA - php-движок, прежде всего. Поэтому я подумал о правильном форуме и решил, что его лучше знают, те кто работают с php. Отсюда и php форум. Понятно?
 

Frol

Новичок
usascha
абсолютно не понятно.

заметь, у тебя вопрос по JS, а не по PHP.
 

SelenIT

IT-лунатик :)
usascha

the_form существует только в пределах функции setCheckboxes, которую ты привел, и ее значение - первый аргумент этой функции.

Если ты вызываешь ф-цию, к примеру, как setCheckboxes("nameOfMySuperForm123", true), то при выполнении ф-ции the_form получит значение "nameOfMySuperForm123".

Поэтому - ищи вызов функции, как справедливо говорит Кром, и смотри, что ты ей передаешь.
 

usascha

Новичок
понятно, надо смотреть где вызывается функция.
Признаюсь, раздел по функциям в замечательной красной книжке пока не осилил, но буду грызть гранит php. :))

Спасибо.
 
Сверху