|
|
|
| Здравствуйте всем! Ситуация такая. На странице есть кнопка (условно назовем ее "добавить") при нажатии на которую javascript добавляет в форму нескоько полей и кнопку. Если нажать на другую кнопку ("удалить"), то скрипт удаляет эти поля, приводя форму к первоначальному состоянию. Самое интересное, что при повторном нажатии "добавить" добавление полей не происходит. Принцип добавления полей происходит следующим образом:
if (!document.myform.del) { код добавления кнопки с id="del" в форму }
Сделано это для предотвращения эффекта размножения поля при многократном нажатии кнопки "добавить".
При первом нажатии "добавить" все происходит нормально. "Удалить" - все нормально, удаляет. Снова "добавить" - и хрен!
При чем в IE7 работает все превосзодно. Но в Mozilla (блин!!!!!!) все происходит как описано. Пробовал выполнять
alert (document.myform.del);
и точно! Перед первой вставкой поля показывает как положено undefinit. При удалении - как положено [object], а вот при последующей вставке опять [object]. Как будто и не удалялось ничего (но все-таки поле исчезает!). Естетсвенно условие проверку не проходит и поле второй раз не добавляется. И , повторяю, именно с Mozilla! В книжке написано, что Mozilla добавляет символы пустого пространства в DOM?! Якобы в этом дело?! А как это обойти и в чем суть - ни слова! Вот надо бы это как то обойти. Есть соображения? | |
|
|
|
|
|
|
|
для: gipper
(12.01.2008 в 21:07)
| | Как именно удаляете, вы не написали.
А это важно.
Порекомендую сразу после удаления ещё и написать document.myform.del = null - тогда уж точно условие if сработает | |
|
|
|
|
|
|
|
для: CNT
(12.01.2008 в 22:06)
| | Удаление происходит командой
document.myform.removeChild(document.myform.dlt);
Если написать, как вы говорите
document.myform.del = null;
после удаления, ничего не происходит, если до удаления, то кнопка dlt не исчезает, но условие if срабатывает. | |
|
|
|
|
|
|
|
для: gipper
(12.01.2008 в 22:49)
| | Ошибка, видимо, всё же в обращении к кнопке.
document.имя_формы.имя_кнопки
А вы пишете, что у вас кнопка с id="del" (или id="dlt" - разобрать при вашей небрежности невозможно).
В общем, давайте кнопке имя (атрибут NAME) - тогда она должна удалиться бесследно. | |
|
|
|
|
|
|
|
для: CNT
(13.01.2008 в 00:38)
| | Первый вариант конечно не del, а dlt. Моя ошибка. Но мне не понятно почему в IE7 все работает? Атрибут name у меня тоже задан dlt. И не понятно про DOM с символами пустого пространства? | |
|
|
|
|
|
|
|
для: gipper
(13.01.2008 в 01:10)
| | Не знаю насчёт 7-го Эксплорера (у меня левый Windows и скачать 7-й не могу) и вообще не понимаю - причём тут пустое пространство.
Вот код, безошибочно работающий в MSIE 6.0, FF 2.0.0.11, Opera 9.26:
<html>
<head>
<script>
function f (x)
{
if (!document.forms.frm.dlt)
{
var z = document.createElement ('input');
with (z) {type = 'button'; id = 'dlt'; value = 'Button'}
document.forms.frm.appendChild (z);
x.value = 'Remove Button';
}
else
{
document.forms.frm.removeChild (document.forms.frm.dlt);
x.value = 'Add Button';
}
}
</script>
</head>
<body>
<form name="frm">
<input id="txt">
</form>
<input type="button" onclick="f (this)" value="Add Button">
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: CNT
(13.01.2008 в 01:34)
| | Cранно! Пробую в Mozilla Firefox 2.0.0.11 , не работает! Может с браузером чего?!!! Но пробовал и на другом компе, то же самое. Попробую еще раз. | |
|
|
|
|
|
|
|
для: gipper
(14.01.2008 в 00:18)
| | Да, у меня тоже дочерние элементы в Mozila и Opera не удаляются. | |
|
|
|
|
|
|
|
для: Даниэль
(05.07.2008 в 00:49)
| |
Замените
if (!document.forms.frm.dlt)
на
if (x.value == 'Add Button')
|
| |
|
|
|