Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.11.2015, 13:19
Новичок на форуме
Отправить личное сообщение для BeardedFace Посмотреть профиль Найти все сообщения от BeardedFace
 
Регистрация: 14.11.2015
Сообщений: 4

Клонированные эл-ты не отвечают на onclick
При нажатии на кнопку она клонируется, почему в данном случае клонированные кнопки не отвечают на onclick??? срабатывает только первая.



<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" >
<style>
input[value = "+"] {
height: 20px;
width: 20px;
}
</style>
</head>
<body>
<div>
<input type="button" id="add" value="+">
</div>
</body>
<script>
var add = document.querySelectorAll("input[value = '+']");
add[add.length - 1].onclick = function() {
var parent = this.parentNode;
var clone = this.cloneNode(true);
parent.appendChild(clone);
add = document.querySelectorAll("input[value = '+']");
}
</script>
</html>
Ответить с цитированием
  #2 (permalink)  
Старый 14.11.2015, 14:01
Аватар для EmperioAf
Профессор
Отправить личное сообщение для EmperioAf Посмотреть профиль Найти все сообщения от EmperioAf
 
Регистрация: 15.01.2015
Сообщений: 622

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>ГГ</title>
<style>
* {
  margin:0;
  padding: 0;
  outline: none;
}

input[value = "+"] {
height: 20px;
width: 20px;
}

</style>
</head>
<body>
<div>
<input type="button" id="add" value="+" onclick="var parent = this.parentNode;var clone = this.cloneNode(true);parent.appendChild(clone);">
</div>
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 14.11.2015, 14:02
Профессор
Отправить личное сообщение для Mess4me Посмотреть профиль Найти все сообщения от Mess4me
 
Регистрация: 03.11.2014
Сообщений: 263

BeardedFace,
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" >
    <script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
    <style>

        input[value = "+"] {
            height: 20px;
            width: 20px;
        }
    </style>
</head>
<body>
<div>
    <input type="button" class="add" value="+">
</div>
</body>
<script>
    var add = document.querySelectorAll("input[value = '+']"); //   Возвращает non-live NodeList всех соответствующих узлов элемента

    add[add.length - 1].onclick = function() {
        var parent = this.parentNode;
        var clone = this.cloneNode(true);
        alert(clone.onclick);
        clone.onclick = this.onclick;
        alert(clone.onclick);
        parent.appendChild(clone);
        add = document.querySelectorAll("input[value = '+']");

    }
</script>
</html>
Ответить с цитированием
  #4 (permalink)  
Старый 14.11.2015, 14:21
Новичок на форуме
Отправить личное сообщение для BeardedFace Посмотреть профиль Найти все сообщения от BeardedFace
 
Регистрация: 14.11.2015
Сообщений: 4

Очень благодарен, а можно подробнее про non-live Nodelist, что конкретно это значит, динамически созданные эл-ты в эту коллекцию не попадают?
правильно понял?
Ответить с цитированием
  #5 (permalink)  
Старый 14.11.2015, 14:22
Профессор
Отправить личное сообщение для Mess4me Посмотреть профиль Найти все сообщения от Mess4me
 
Регистрация: 03.11.2014
Сообщений: 263

BeardedFace,
у Вас всё нормально , Вы строкой в onclick :
add = document.querySelectorAll("input[value = '+']")
возвращаете новый набор, просто забыл удалить комментарий )) А вообще про это можно почитать здесь http://learn.javascript.ru/searching-elements-internals
Ответить с цитированием
  #6 (permalink)  
Старый 14.11.2015, 15:06
Новичок на форуме
Отправить личное сообщение для BeardedFace Посмотреть профиль Найти все сообщения от BeardedFace
 
Регистрация: 14.11.2015
Сообщений: 4

А почему без clone.onclick = this.onclick событие не передается следующему эл-ту? ведь эл-т создан, добавлен в add[], почему не работает add[add.length - 1].onclick ?
Ответить с цитированием
  #7 (permalink)  
Старый 14.11.2015, 15:14
Профессор
Отправить личное сообщение для Mess4me Посмотреть профиль Найти все сообщения от Mess4me
 
Регистрация: 03.11.2014
Сообщений: 263

BeardedFace,
в документации сказано :
Cloning a node copies all of its attributes and their values, including intrinsic (in–line) listeners. It does not copy event listeners added using addEventListener() or those assigned to element properties. (e.g. node.onclick = fn)
Ответить с цитированием
  #8 (permalink)  
Старый 14.11.2015, 15:21
Новичок на форуме
Отправить личное сообщение для BeardedFace Посмотреть профиль Найти все сообщения от BeardedFace
 
Регистрация: 14.11.2015
Сообщений: 4

Всё стало ясно, огромное благодарю!))
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверить onclick или не onclick милт Events/DOM/Window 3 23.09.2014 23:36
Ошибка формирования onclick в IE Pavel2012 Internet Explorer 2 23.11.2012 18:06
onclick по блоку в котором есть ссылки dr_gluk jQuery 2 17.11.2011 15:37
OnClick ячейки таблицы и ссылки в этой ячейке MasDen Javascript под браузер 2 30.06.2011 10:34
Событие onClick avtor01 Events/DOM/Window 3 03.09.2009 18:01