Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Javascript] Zdarzenie input nie reaguje.
bAb1k
post 28.05.2015, 00:44:15
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 12.10.2012

Ostrzeżenie: (0%)
-----


Witam. Generuje sobie tabelę po przez Javascrpit i próbuję zrobić tak, że gdy nacisnę na "input" to coś się zrobi... Skrypt prosto wygląda tak:


  1.  
  2. if(document.getElementsByName('table') > 0)
  3. {
  4. document.getElementsByName('input').addEventListener('input', function(e)
  5. {
  6. alert('dziala');
  7.  
  8. }, false);
  9. }


Jednak Alert się nie wyświetla. W konsoli nie ma błędów (ale dlatego ten if - ponieważ na start. owego inputu nie ma)
Próbowałem również pobierając po przez id etc. próbowałem różnych nazw zdarzeń (input / change / click / etc) i nie wyświetla ;/

Dlatego piszę i prosże o jakieś porady wink.gif.
Go to the top of the page
+Quote Post
Comandeer
post 28.05.2015, 01:12:44
Post #2





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

Ostrzeżenie: (0%)
-----


Kod
if(document.getElementsByName('table') > 0)

A ten warunek się wgl wykonuje? Bo jak dla mnie nie ma prawa się wykonać
Po pierwsze - ta metoda pobiera elementy po atrybucie [name], a raczej nie tego chcesz. Jeśli chcesz pobrać tabele na stronie, to powinieneś użyć getElementsByTagName.
Po drugie - interesuje Cię length tak uzyskanej kolekcji, bo to ta własność jest liczbą.
Kod
if(document.getElementsByTagName('table').length > 0)


No i naciśnięcie na input to click. Zdarzenie input działa tylko w trakcie wpisywania do pola


--------------------
Go to the top of the page
+Quote Post
bAb1k
post 28.05.2015, 08:41:30
Post #3





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 12.10.2012

Ostrzeżenie: (0%)
-----


Faktycznie, godzina już zrobiła swoje ;/. Byłem pewien, że przez pół zamknięte oczy widzę 'tag' w słowie. Zmieniłem i jedną i drugą rzecz, ale - nadal nic (dodałem alert w samym ifie i też nie wyskakuje...)


Dodałem:
  1. document.getElementById('wynik2').innerHTML = document.getElementsByTagName('table').length;
takie o to sprawdzenie, które cały czas wskazuje na liczbę 0. Niezależnie czy na stronie są takie elementy czy ich nie ma ;/.


@EDIT:
Chyba znam problem. Cały if się nie odświeża, muszę go gdzieś zamknąć w funkcji, która się powtarza wink.gif. - się okaże, czy znajdę jakieś szybkie i proste rozwiązanie.

No mam nadzieję, że nikt mnie nie powiesi za zrobienie tego w taki sposób:

  1. document.body.addEventListener('click', function(e)
  2. {
  3. if(document.getElementsByTagName('table').length > 0)
  4. {
  5. alert('Do tego momentu sie wykonuje');
  6.  
  7. document.getElementsByTagName('input').addEventListener('input', function(e)
  8. {
  9. alert('Błąd: Uncaught TypeError: document.getElementsByTagName(...).addEventListener is not a function');
  10.  
  11. }, false);
  12. }
  13. }, false);


tylko właśnie ten jeden błąd .


Okey udało mi się rozwiązać problem wink.gif


  1.  
  2. document.body.addEventListener('input', function(e)
  3. {
  4. if(document.getElementsByTagName('table').length > 0)
  5. {
  6. // kod
  7. }
  8. }, false);
  9.  


Ten post edytował bAb1k 28.05.2015, 10:19:05
Go to the top of the page
+Quote Post
Comandeer
post 28.05.2015, 10:35:37
Post #4





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

Ostrzeżenie: (0%)
-----


Nie można przypiąć zdarzenia do kolekcji. Można przypinać do poszczególnych elementów kolekcji (więc w pętli).
Ty natomiast zastosowałeś event delegation


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 16.06.2025 - 18:56