Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript] Tworzenie dynamicznie odnośnikow i EventHandler
pjamalia
post
Post #1





Grupa: Zarejestrowani
Postów: 77
Pomógł: 0
Dołączył: 1.11.2009

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


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. }


Ten post edytował pjamalia 15.10.2011, 08:46:48
Go to the top of the page
+Quote Post
konrados
post
Post #2





Grupa: Zarejestrowani
Postów: 623
Pomógł: 79
Dołączył: 16.01.2008

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


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.

Go to the top of the page
+Quote Post
pjamalia
post
Post #3





Grupa: Zarejestrowani
Postów: 77
Pomógł: 0
Dołączył: 1.11.2009

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


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
Go to the top of the page
+Quote Post
croc
post
Post #4





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

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


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.
Go to the top of the page
+Quote Post
pjamalia
post
Post #5





Grupa: Zarejestrowani
Postów: 77
Pomógł: 0
Dołączył: 1.11.2009

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


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. }
Go to the top of the page
+Quote Post
zegarek84
post
Post #6





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


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


Ten post edytował zegarek84 16.10.2011, 17:15:57
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 26.08.2025 - 16:40