Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.10.2012, 11:15
Интересующийся
Отправить личное сообщение для Alyona Посмотреть профиль Найти все сообщения от Alyona
 
Регистрация: 27.10.2011
Сообщений: 18

Проблема с lastChild и removeChild
Доброго времени суток.

Есть код, который добавляет поля при клике на кнопке и удаляет их.

код javascript:

<script language="javascript">
	function add_inputsize()
	{
            countonesize = ++document.getElementById('inputsizecount').value;
            var new_input=document.createElement('div');
            new_input.innerHTML='<table width="450px">bla-bla</table><br />';
            document.getElementById('inputsize').appendChild(new_input);
	}
	function del_inputsize()
	{
            countonesize = document.getElementById('inputsizecount').value;
            if (countonesize!=0){    // Удаляем любую строку кроме первой
                document.getElementById('inputsize').removeChild(document.getElementById('inputsize').lastChild);
                document.getElementById('inputsizecount').value -= 1; // Уменьшаем счетчик элементов
            }
            return false;
        }
    </script>


На странице:

<div id="inputsize">
                    <input type="hidden" id="inputsizecount" name="inputsizecount" value="0">
                    <table width="450px">bla-bla</table>
                    <br />
                </div>
                <input type="button" onclick="add_inputsize()" value="Добавить размер">
                <input type="button" onclick="del_inputsize()" value="Убрать последний">



Проблема в чем: все работает, но если я создаю при загрузке уже 2 дива (один вложенный - как создавался бы при клике на кнопку), например:

<div id="inputsize">
                    <input type="hidden" id="inputsizecount" name="inputsizecount" value="0">
                    <table width="450px">bla-bla</table>
                    <br />
<div>//вложенный див
<table width="450px">bla-bla</table> 
                    <br />
</div>
                </div>
                <input type="button" onclick="add_inputsize()" value="Добавить размер">
                <input type="button" onclick="del_inputsize()" value="Убрать последний">


то он ни в какую не хочет удаляться при клике на кнопку. Причем если я жму дальше добавить - новые дивы и добавляются, и удаляются, а тот, что я создала при загрузке - никак.

При проверке lastchild - он пишет, что это элемент #text, хотя должен быть objectdiv (или как он там).

Подскажите, что не так?
Ответить с цитированием
  #2 (permalink)  
Старый 03.10.2012, 11:45
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 03.05.2011
Сообщений: 848

Alyona, так ему нечего удалять за счет этой строки
if (countonesize!=0){

в
<input type="hidden" id="inputsizecount" name="inputsizecount" value="0">

у вас записано, что количество элементов = 0, значит последний элемент (если он не первый по умолчанию) удален не будет
Ответить с цитированием
  #3 (permalink)  
Старый 03.10.2012, 12:02
Интересующийся
Отправить личное сообщение для Alyona Посмотреть профиль Найти все сообщения от Alyona
 
Регистрация: 27.10.2011
Сообщений: 18

Нее, с этим все в порядке. Когда я делаю вложенный див - я в счетчике пишу 1 или количество вложенных дивов.
Функция работает - он уменьшается, но див не исчезает.
Ответить с цитированием
  #4 (permalink)  
Старый 03.10.2012, 12:37
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 03.05.2011
Сообщений: 848

Сообщение от Alyona Посмотреть сообщение
Нее, с этим все в порядке. Когда я делаю вложенный див - я в счетчике пишу 1 или количество вложенных дивов.
Функция работает - он уменьшается, но див не исчезает.
<html>
<head>
<script language="javascript">
    function add_inputsize()
    {
            countonesize = ++document.getElementById('inputsizecount').value;
            var new_input=document.createElement('div');
            new_input.innerHTML='<table width="450px">bla-bla</table><br />';
            document.getElementById('inputsize').appendChild(new_input);
    }
    function del_inputsize()
    {
            countonesize = document.getElementById('inputsizecount').value;
            if (countonesize!=0){    // Удаляем любую строку кроме первой
                document.getElementById('inputsize').removeChild(document.getElementById('inputsize').lastChild);
                document.getElementById('inputsizecount').value -= 1; // Уменьшаем счетчик элементов
            }
            return false;
        }
    </script>
</head>
<body>
<!--<div id="inputsize">
                    <input type="hidden" id="inputsizecount" name="inputsizecount" value="0">
                    <table width="450px">bla-bla</table>
                    <br />
                </div>-->
<div id="inputsize">
                    <input type="hidden" id="inputsizecount" name="inputsizecount" value="1">
                    <table width="450px">bla-bla</table>
                    <br />
<div>
<table width="450px">bla-bla</table>
                    <br />
</div></div>
                <input type="button" onclick="add_inputsize()" value="Добавить размер">
                <input type="button" onclick="del_inputsize()" value="Убрать последний">
</body>
</html>
Ответить с цитированием
  #5 (permalink)  
Старый 03.10.2012, 12:50
Интересующийся
Отправить личное сообщение для Alyona Посмотреть профиль Найти все сообщения от Alyona
 
Регистрация: 27.10.2011
Сообщений: 18

Ну? Я так и пишу, див не исчезает.
Ответить с цитированием
  #6 (permalink)  
Старый 03.10.2012, 14:06
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 03.05.2011
Сообщений: 848

Alyona, вы где проверяете? у меня в FF 15, GC 22, IE 8 робит
Ответить с цитированием
  #7 (permalink)  
Старый 03.10.2012, 14:24
Интересующийся
Отправить личное сообщение для Alyona Посмотреть профиль Найти все сообщения от Alyona
 
Регистрация: 27.10.2011
Сообщений: 18

Chrom, mozilla - не исчезает див, который сделала руками.
Ответить с цитированием
  #8 (permalink)  
Старый 03.10.2012, 14:28
Интересующийся
Отправить личное сообщение для Alyona Посмотреть профиль Найти все сообщения от Alyona
 
Регистрация: 27.10.2011
Сообщений: 18

Если делаю 2 дива, т.е. их в итоге 3 - получается так:

жму удалить - див остается, счетчик -1
жму еще раз - див удаляется (последний, третий), счетчик -1

В итоге остается 2 дива, а должен быть один.
Ответить с цитированием
  #9 (permalink)  
Старый 03.10.2012, 14:58
Интересующийся
Отправить личное сообщение для Alyona Посмотреть профиль Найти все сообщения от Alyona
 
Регистрация: 27.10.2011
Сообщений: 18

Да, я вижу, что работает. Ну у меня на сайте, конечно, не такой простой пример. Что ж не так я сделала?
Ответить с цитированием
  #10 (permalink)  
Старый 03.10.2012, 16:19
Интересующийся
Отправить личное сообщение для Alyona Посмотреть профиль Найти все сообщения от Alyona
 
Регистрация: 27.10.2011
Сообщений: 18

В общем, в моем навороченном коде функция срабатывает после второго раза, значит он что-то еще добавляет.

Что это может быть? У меня в дивах таблица (без tbody) + р с текстом и инпутами. Они могут на что-то влиять?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с обработкой ескольких .hover() anocean jQuery 3 15.06.2012 22:43
addChild removeChild проблема Sadist_dead Flash 3 26.01.2012 13:00
Проблема с дизайном после отправки xmlhttprequest, Проблема с дизайном после отправки cyberx AJAX и COMET 3 01.05.2010 17:07
Проблема, в менюшке Большой джо Элементы интерфейса 0 12.07.2009 17:12
Проблема спама lliberty AJAX и COMET 1 12.03.2009 16:47