Jak przekazać event poprzez bind w addeventlistener?

Odpowiedz Nowy wątek
2018-12-23 21:04
Wesoły Terrorysta
0

Dobry wieczór, czy znalazł by się jakiś uzdolniony, wybitny programista który wytłumaczył by mi jak przekazywać event pomiędzy funkcją którą zbindowano w addeventlistener a funkcjami umieszczonymi wewnątrz tejże funkcji.

<script> function manufacture(div_s,order){ if(order=='Start'){ document.body.appendChild(document.getElementById(div_s)); document.getElementById(div_s).style.position='absolute'; cursor_position(event); document.getElementById(div_s).style.left=cursor_x-10+'px'; document.getElementById(div_s).style.top=cursor_y-10+'px'; document.addEventListener('mousemove',cursor_position); document.addEventListener('mousemove',div_position); document.addEventListener('mousemove',div_dislocation); document.addEventListener('mousemove',div_transmutation);} else{ document.removeEventListener('mousemove',cursor_position); document.removeEventListener('mousemove',div_position); document.removeEventListener('mousemove',div_dislocation); document.removeEventListener('mousemove',div_transmutation);}} var z=document.getElementById('N1'); z.addEventListener('mousedown',manufacture.bind(z,'N1','Start')); </script>

Powyższy kod zadziała do funkcji cursor_position(event);
Logicznym rozwiązaniem tego problemu wydaje mi się dodanie event w miejscu przyczepienia funkcji manufacture do obiektu N1;
Gdy jednak to zrobię

<script> function manufacture(event,div_s,order){ if(order=='Start'){ document.body.appendChild(document.getElementById(div_s)); document.getElementById(div_s).style.position='absolute'; cursor_position(event); document.getElementById(div_s).style.left=cursor_x-10+'px'; document.getElementById(div_s).style.top=cursor_y-10+'px'; document.addEventListener('mousemove',cursor_position); document.addEventListener('mousemove',div_position); document.addEventListener('mousemove',div_dislocation); document.addEventListener('mousemove',div_transmutation);} else{ document.removeEventListener('mousemove',cursor_position); document.removeEventListener('mousemove',div_position); document.removeEventListener('mousemove',div_dislocation); document.removeEventListener('mousemove',div_transmutation);}} var z=document.getElementById('N1'); z.addEventListener('mousedown',manufacture.bind(z,event,'N1','Start')); </script>

Gdy dodam event do argumentów funkcji, i zadeklaruję go w addEventListener wszystko przestaje działać.
Wnioskuje że zapewne dlatego że event mousedown obiektu N1 nie dochodzi do funkcji manufacture. I tu jest moje pytanie jak przekazać to zdarzenie poprzez funkcję zbindowaną w addeventlistener. Jakoś da się to zapewne zrobić tylko pytanie jak? I bardzo proszę o rzeczowe odpowiedzi takie typu użyj jquery albo jakiejś biblioteki mnie nie interesują chcę nauczyć się robić to w czystym js.

radziłbym wyedytować posta, bo nikomu się nie będzie chciało czytać takiego. W forumowym edytorku masz opcję dodawania kodu/podświetlania składni do posta. - LukeJL 2018-12-23 22:04

Pozostało 580 znaków

2018-12-25 17:16
Wesoły Terrorysta
0

Rozwiązałem już problem. Zamieszczam rozwiązanie dla potomnych. Otóż jak bindujecie event w addeventlistener to po prostu nic tam nie dajecie.

z.addEventListener('mousedown',manufacture.bind(z,event,'N1','Start'));
tak myślałem że należy to zrobić
z.addEventListener('mousedown',manufacture.bind(z,'N1','Start'));
a tak w rzeczywistości trzeba to zrobić, w funkcji którą przypisujemy dajemy event, a później argumenty, zaś w samym bind obiekt do którego przypisujemy(z), później w miejscu gdzie powinien być event nie dajemy nic, a na samym końcu nasze wartości('N1','Start').

Pozostało 580 znaków

2018-12-25 18:01
Wesoły Terrorysta
0

I jeszcze jedno event w argumentach funkcji którą przypisujecie musi być ostatni w kolejności

<script> function manufacture(div_s,order,event){}</script>

jeśli event ustawicie na początku to podstawi wam zdarzenie pod jakiś inny argument niż ten co trzeba.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0