Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] Tworzenie dynamicznie odnośnikow i EventHandler
Forum PHP.pl > Forum > Przedszkole
pjamalia
Cześć wam,

Napisałem funkcje, co chcę osiągnąć:

Pod każdym utworzonym odnośniku "a href" chcę podpiąć EventHanler onclick np żeby realizował mi funkcję test() po kliknięciu nań.

oto kod:

  1. function createAhrefs(div_name)
  2. {
  3. var div = document.getElementById(div_name);
  4. div.style.width=200;
  5. div.style.height=200;
  6. div.style.backgroundColor="black";
  7. div.style.color="white";
  8. for(var iter = 1; iter <=js_counter; iter++)
  9. {
  10. /* tworzę dynamiczny odnośnik */
  11. a=document.createElement("a");
  12. a.setAttribute("href",iter);
  13. a.appendChild(document.createTextNode(iter));
  14. a.style.color="green";
  15. a.id=iter+"link";
  16. div.appendChild(a);
  17. }
  18. a.click= właśnie nie wiem jak w tym przypadku podpiąc eventy pod kazdy link
  19. }
  20.  
  21.  
  22. function test()
  23. {
  24.  
  25. for(var iter = 1; iter <=js_counter; iter++)
  26. {
  27. var div = document.getElementById(iter+"link");
  28. alert("YUPI !!! "+div);
  29. }
  30. }
konrados
Cytat
a.click= właśnie nie wiem jak w tym przypadku podpiąc eventy pod kazdy link


A takie coś nie zadziała?:
  1. a.onclick=function(){alert('cos tam');};


No i wstaw to w pętlę, a nie pod nią.

Ewentualnie jqueryowo:
  1. $('#'+iter+'link').click(function(){
  2. alert('cos tam')
  3. });


Również w pętli a nie poza nią. Pisane z palca.

pjamalia
Nie chce otwierać nowego tematu, pociągnę już tutaj. Dodaję sobie tekst do div'a w ten sposób:

  1. var v = document.createTextNode(i+" - >" +validation[i] + "\n");
  2. div.appendChild(v);


1. W jaki sposób mogę sobie zapisywać
  1. document.createTextNode(i+" - >" +validation[i] + "\n");
w nowych liniach na warstwie?
2. Chciałbym móc usuwać dodawane appendChild'y na starcie dzialania funkcji, w jaki sposób można usunąć wszystkie jeżeli istnieją?

pozdrawiam
croc
Nie łatwiej posługiwać się innerHTML zamiast bawić się w węzły?

A nowe linie wstawisz normalnie jako <br> - pamiętaj, że \n dla HTML działa jak spacja.
pjamalia
narazie nie wiem dlaczego wypluwa mi tylko ostatni element w tablicy, powinno wypluć około 15:

  1. for(var i = 0 ; i<=validation.length; i++)
  2. {
  3. if(validation[i])
  4. {
  5. //var v = document.createTextNode(i+" - >" +validation[i] + "\n");
  6. var v = document.getElementById("errors").innerHTML = i+" - >" +validation[i] + "<br />";
  7. //div.appendChild(v);
  8. }
  9. }
zegarek84
co chwila w innerHTML kasujesz poprzednią zawartość w pętli ;]
[JAVASCRIPT] pobierz, plaintext
  1. var sErrors = '';
  2. for(var i = 0 ; i<=validation.length; i++)
  3. {
  4. if(validation[i])
  5. {
  6. sErrors+=i+" - >" +validation[i] + "<br />";
  7. }
  8. }
  9. document.getElementById("errors").innerHTML = sErrors;
[JAVASCRIPT] pobierz, plaintext
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.