Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Изменение значения name у input

413
06 мая 2004 года
lunaplus
93 / / 04.10.2003
Народ, вот такая задачка. На страничке есть input, у которого name="12xxx12", необоходимо xxx заменить, т.е. поменять значение name. Кто нить знает как это можно сдлеать obj.name="new_name" рабоать отказывается наотрез!
Вот вам головоломочка, под стать олимпиадной задачке!
Может кто нить что нибудь подскажет!!!!!
287
06 мая 2004 года
Shiizoo
958 / / 14.03.2004
Бррррр решений море=) Только вот кто какими пользуется, кому какие нравятся..) Собственно я предпочитаю юзать возможности w3c DOM (докУмент обжЭкД модъЕль) + JS/JScript (JS и JScript эт похожие штуки, но не одно и то же.. всех отличий и сам не знаю=)))))..

Вот такие две функции в паре могут включать/выключать чекбоксы..

function gswitch_chk(form_name,checkboxes_sbustr) {

var inpt;

inpt = document.forms(form_name).firstChild;

feach(inpt,checkboxes_substr);

}

function feach(it,name_cmp_str) {
do {
if (it.name) {
if (it.name.indexOf(name_cmp_str) != -1) {
if (it.checked != true) {
it.checked = true;
} else {
it.checked = false;
}
}
}
if (it.firstChild) {
feach(it.firstChild,name_cmp_str);
}
} while (it = it.nextSibling);
}

А это чекбокс кторый их вызывает..

<input type="checkbox" onclick="gswitch_chk('_mainForm','id[');">

Результат - все чебоксы, кторые попались этим функциям в руки и у которых в именах встретилась строка 'id[' получат противоположное значение в свойстве 'checked'.

Кнешна, не лучший вариант.. Ночью забегу - нарисую все как надо..

А ты можешь потренироваться с тем, что скинул.. Пара волшебных шлёпов по клаве и вот оно решение=)

Сделаю заметку, в dom`е детьми формы считаются не только input`ы и тому подобные тэги попавшиеся между <form> и </form>, но и все, что вообще находится между ними.. Будь это таблицы, ячейки таблиц, строки картинки и вообще какая-либо другая лабуда.. Но, на самом деле это не страшно.. Перебо даже ОЧЕНЬ большей страницы проходит моментально, имхо НЕЗАМЕТНО.. только вот юзание рекурсивного вызова feach() - это плохо.. нередко видел как js (под IE например) выдавал ошибки при очень глубоких рекурсиях.. В общем, не буду пудрить лишний раз мозги) Седня, попозже скину наманый вариант =) До связи и т.п. и т.д..

P.S. Какими браузерами поддерживается w3c DOM (самый сурьезный и правильный dom) точно сказать не могу.. Если только, Netscape, Mozilla и др. из их семейства.. IE по-моему с 6-ой или 5-ой версии.. Opera - вообще без понятия, но у них на сайте (на родном сайте) где-то была табличка, где написано, что поддерживается и какими версиями..)
413
06 мая 2004 года
lunaplus
93 / / 04.10.2003
Уважаемый Shiizoo !
К сожалению я не поняла к чему относитсья твое сообщение, но это уже не важно. Решение было найдено. ПРоблема, описанная выше актуальна только для IE , в Мозиле же this.name="new_name" фунциклирует.
А вот для IE необходимо CreateElement("<input name='new_name' >") и делов то. А старый инпут удалить. Только еще необходимо пробежать все атрибуты, сохранить те, у которых установлено значение (input_obj.attributes выдает список всех возможных атрибутов) и добавить их в новоиспеченый Input! Вот такие пироги!
287
07 мая 2004 года
Shiizoo
958 / / 14.03.2004
Ну, уважаемый, не уважаемый) Просто Shiiz..) С пониманием, ээ.. Это да, меня зачастую, а точнее чуть-ли не постоянно с первого раза не понимают) К чему относилось, ну, хех.. Дело такое - во всех браузерах кторые поддерживают w3c DOM совершить любые вариации, такие какие необходимы были тебе, или еще какие-нить, это как раз два плюнуть.. про это собственно я и писал=) правда обрывисто, временами погружаясь 'клин'.. понятное дело, работы море, мозни не успевают переваривать какую-либо информацию извне, потому как итак доверху забиты всяческими раздумьями=) Да и тем более, работая с perl, одновременно не могу оперировать с js или чем-то другим.. то есть.. мышление у меня в общем пошаговое..)) имхо "сделай одно дело, а птом берись за другое").. Таки дела.. По поводу IE - не верю я, что необходимо уничтожать элемент и создавать новый.. Как так? IE обладает чуть-ли не самым продвинутым dom`ом из всех кторые вообще используются в браузерах (я имею ввиду популярные.. экзотика не всчет).. Сейчас приступлю к изучению проблемы и, думаю, найду ответ.. НУ НЕ МОЖЕТ БЫТЬ ТАКОГО.. =) никаких createElement.. никаких insertbefore и т.п. и т.д.. все должно быть по-людски=) ну, эт я так считаю.. как управлюсь - пришлю ответ.. а если все-таки не управлюсь.. ухх.. можете меня бить и пинать, знач я не прав=)

До связи.=)
287
07 мая 2004 года
Shiizoo
958 / / 14.03.2004
Приветы Луна еще раз.. Вот решение..

function func(victim) {
victim.setAttribute('name','ohoho');
alert(victim.name);
}

setAttribute метод объекта Element w3c dom..
как insertBefore и все остальное.. принимает два строковых значения.. первое - имя аттрибута.. второе - новое значние атрибута..

input и есть эти самые Element`ы.. Так тчо юзай такую конструкцию, и не разрушай никаких input`ов попросту так.. по поводу IE.. у меня victim.name = 'newname'; работает на ура.. без глюков.. IE 6.0 (без SP). Под SP я думаю тоже бы работало.. вроде бы все.. рад помочь и все такое..

P.S. insertBefore, createElement и т.п. не будут работать в браузерах, кторые не поддерживают хотя бы w3c DOM lvl 1.. Потому как все это фишки w3c Dom`а.. на счет IE точно говорить не приходится.. В microsoft работают четкие ребята, и многие 'мули' они делают сами.. в любом случае все нужно проверять.. но, я бы на твоем месте не стал пытаться творить детища, поддерживающие старые браузеры.. это глупость.. подо всех не подстроишься..=) пробывал.. не получалось=)
287
07 мая 2004 года
Shiizoo
958 / / 14.03.2004
И еще.. забыл сказать=) Для копирования аттрибутов объекта можно применить victim.cloneNode.. метод принимает один булев аргумент.. если true, то копируются не только атрибуты элемента, но и все его детища, со всеми ихними прибабасами.. возвращает функция такой же элемент, какой мы копировали с null значением в аттрибуте parentNode..

усё=) коннект окончен..
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог