URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 4158
[ Назад ]

Исходное сообщение
"почему не работает"

Отправлено mishgan , 08-Июн-06 18:47 
<form method="post"  name="sends">
                <INPUT type=text name="text[20]" value=""
                onkeypress="this.form.text[20].value=bm(20,20);"
                onChange="this.form.text[20].value=bm(20,20);"
                onFocus="this.form.text[20].value=bm(20,20);"
                onBlur="this.form.text[20].value=bm(20,20);"
                onSelect="this.form.text[20].value=bm(20,20);"
                onMouseOut="this.form.text[20].value=bm(20,20);"
                onMouseMove="this.form.text[20].value=bm(20,20);"
                onClick="this.form.text[20].value=bm(20,20);"
                >
</form>

<script language=JavaScript>
function bm(nzn , nomer){
zap=  document.sends.text[nomer].value;
if   (nzn > zap)  return zap;
else {return nzn;}
}
</script>
Почему у меня это не работает ?


Содержание

Сообщения в этом обсуждении
"почему не работает"
Отправлено XAnder , 09-Июн-06 08:42 
И не должно работать. Если хочешь достучаться до элемента формы, имеющего имя text[20], то писать нужно буквально так:

this.form.elements["text[20]"].value

или так:

this.form["text[20]"].value

а такая запись:

this.form.text[20].value

означает обращение к 20-му элементу массива this.form.text, которого в природе не существует.

Рекомендую почитать http://dklab.ru/chicken/nablas/ особенно 38 и 39. Там автор достаточно доходчиво объясняет достаточно сложные вещи.


"почему не работает"
Отправлено mishgan , 09-Июн-06 18:17 
>И не должно работать. Если хочешь достучаться до элемента формы, имеющего имя
>text[20], то писать нужно буквально так:
>
>this.form.elements["text[20]"].value

Спасибо. все работает


"почему не работает"
Отправлено SoD , 09-Июн-06 23:45 
>>И не должно работать. Если хочешь достучаться до элемента формы, имеющего имя
>>text[20], то писать нужно буквально так:
>>
>>this.form.elements["text[20]"].value
>
>Спасибо. все работает

Правильнее использовать getElementById('id элемента ');


"почему не работает"
Отправлено XAnder , 13-Июн-06 08:37 
>Правильнее использовать getElementById('id элемента ');

Не сказал бы, что это правильнее. Точнее, в большинстве случаев так делать или некрасиво, или вообще невозможно.

Во-первых, метод getElementById есть только у объекта document, то есть при таком подходе приходится всегда работать с глобальным объектом, даже если текущая задача очень локальная (как в обсуждаемом примере).

Во-вторых, id может быть далеко не у каждого элемента, а принудительная их расстановка сильно загромождает код, и в общем случае это задача нетривиальная, т. к. все id находятся в глобальной области видимости и нужно следить за их уникальностью. А атрибуты name элементов формы локальны по отношению к данной форме - их использование хорошо укладывается в идеологию структурного программирования.