Javascript.RU

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

Не работает drag and drop
Почему пишет, то, что Cannot read property 'addEventListener' of null?

А если сделать без функции, то всё работает

http://plnkr.co/edit/VpsFj0r8cMIxYKNMqOa5?p=preview
Ответить с цитированием
  #2 (permalink)  
Старый 20.07.2016, 17:35
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

DivMan,
почему вы назначаите 'addEventListener' несуществующему элементу ?
создали тогда и назначили обработку событий. иначе читайте про делегирование.
Ответить с цитированием
  #3 (permalink)  
Старый 20.07.2016, 17:48
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

рони,
пардон, погорячился...
Ответить с цитированием
  #4 (permalink)  
Старый 20.07.2016, 18:19
Профессор
Отправить личное сообщение для DivMan Посмотреть профиль Найти все сообщения от DivMan
 
Регистрация: 08.03.2016
Сообщений: 429

А для чего в этом примере https://jsfiddle.net/2LL5160t/
return false, если и без него всё работает?
Ответить с цитированием
  #5 (permalink)  
Старый 20.07.2016, 18:23
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

DivMan,
добавьте сверху меню очень много текста и уберите return false
Ответить с цитированием
  #6 (permalink)  
Старый 20.07.2016, 19:12
Профессор
Отправить личное сообщение для DivMan Посмотреть профиль Найти все сообщения от DivMan
 
Регистрация: 08.03.2016
Сообщений: 429

А теперь почему не появляется alert?

Я же проверил, есть ли у дива класс con

После того, как блок создался, должно выполнится условие, а почему оно не выполняется?

http://plnkr.co/edit/Xu0ZmYGVdSCdBy2axgEq?p=preview
Ответить с цитированием
  #7 (permalink)  
Старый 20.07.2016, 19:24
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

DivMan,
совет прежний, создали элемент тогда присвоили ... строки 57-58 должны находится в функции div() в конце

function div(){
    var div = document.createElement('div');
    div.style.width='100px';
    div.style.height='100px';
    div.style.backgroundColor="green";
    div.setAttribute('class', 'con');
    document.body.insertBefore(div, document.body.firstChild);
*!*
    div.addEventListener('mousedown', mDown);
    div.addEventListener('mouseup', mUp);
*/!*
  }
Ответить с цитированием
  #8 (permalink)  
Старый 20.07.2016, 19:38
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

ТС не тупи, див создается _после_ нажатия кнопки, которое произойдет через миллион лет в летосчислении компа, после того как скрип закончится.

Так не делается. Событие должно завершится чем-то осмысленным и полезным, в смысле обработка события.

var div2 = document.querySelector('.con')

function div(){
	var div = document.createElement('div');
	/* бла-бла */
	document.body.insertBefore(div, document.body.firstChild)
}

/* это случится ПОТОМ, через миллиарды тиков процессора */
btn.onclick = div

/* а это случается через 1 тик после предыдущей строки */
var con = document.querySelector('.con');


Разумеется того, что произойдет в будущем, в настоящем нету. То есть тут просто полное непонимание event driven application )))
Ответить с цитированием
  #9 (permalink)  
Старый 20.07.2016, 19:45
Профессор
Отправить личное сообщение для DivMan Посмотреть профиль Найти все сообщения от DivMan
 
Регистрация: 08.03.2016
Сообщений: 429

засунул я эти строки в функцию, всё равно не работает http://plnkr.co/edit/mL4iwuUgwSQjLRLcnvyU?p=preview
Ответить с цитированием
  #10 (permalink)  
Старый 20.07.2016, 19:50
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Вот так делай

function div(){
	var con=mk_div('con');
	con.addEventListener('mousedown', mDown);
	con.addEventListener('mouseup', mUp);
	document.addEventListener('mousemove', mMove);
}

function mk_div(rule){
	var div = document.createElement('div'),
	style=div.style;
	style.width='100px';
	style.height='100px';
	style.backgroundColor="green";
	div.className=rule;
	return document.body.insertBefore(div, document.body.firstChild)
}

btn.onclick = div;
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
drag & drop как в vk.com zerofx Элементы интерфейса 7 31.07.2015 21:02
ищу Drag & drop плагин для построения плана помещения Den Brown Элементы интерфейса 0 31.07.2015 19:23
drag & drop , html 5 cyber Events/DOM/Window 1 30.06.2012 15:16
Разбираюсь с drag and drop uaNikita Events/DOM/Window 4 22.09.2011 11:25
Drag & Drop с несколькими элементами Katz Общие вопросы Javascript 1 29.07.2011 13:01