Показать сообщение отдельно
  #2 (permalink)  
Старый 25.12.2011, 08:53
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

Rig,
Потому что нет никакого list.nextSibling после вставленного клона , снова клонируем по первой кнопке - это узел kot1 -- после него есть узел id = 'NewId' -- теперь у нас узлы по порядку kot1 ,'NewId','NewId' -потом третья кнопка клонирования срабатывает потому что ищеться первый id = 'NewId' а после него уже есть узел , то есть мы на самом деле всегда клонируем второй узел на какую бы кнопку после первой ненажимали еслибы id было уникальным то последний клон никогда бы не смог себя клонировать потому что он последний и после него нет никаких больше узлов.
чтоб было ещё понятнее уберите перевод строки между
22</li>
23</ul>
сделайте так
22</li></ul>
и ваш скрипт никогда не сработает с самого начала -- меняйте алгорит скрипта -- проверка на list.nextSibling явно лишняя... да и id у всех элементов должно быть уникальным.
Возможный вариант ... у input только по прежнему не уникальные id ... добавьте сами по примеру ниже
<html><head>
<script type="text/javascript">
var n = 1;
function addItem(node) {
    var list = node;
    var ul   = list.parentNode;
    var newItem = list.cloneNode(1);
    newItem.id = 'NewId'+n++;
    ul.insertBefore(newItem, ul.lastChild);
}
</script>
</head><body>
<ul id="prices">
<li id="kot1">
<label for="price">Primer</label>
<input type="text" class="cat" name="price" id="price" value="0.00" onChange="checkPrice(this.id)" />
<input type="button" class="addline" value=" + " onClick="addItem(this.parentNode);" />
</li>
</ul>
</body></html>
Ответить с цитированием