Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Javascript] Zdarzenie input nie reaguje.
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
bAb1k
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.
Comandeer
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
bAb1k
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.  
Comandeer
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.