Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> zdarzenia w pętli
slammer
post 1.12.2007, 16:15:29
Post #1





Grupa: Zarejestrowani
Postów: 187
Pomógł: 6
Dołączył: 31.08.2005
Skąd: Bielsko-Biała

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


Przedstawiam fragment kodu z mojego skryptu:
  1. for(i=0; i < 3; i++){
  2. for(j=0; j < 3; j++){
  3. document.getElementById(i+'_'+j).onmouseover = function() {alert(i)};
  4. }
  5. }


Zdawałoby się, że po wykonaniu takiego kodu powinienem uzyskać taki rezultat:
  1. <div id="0_0" onmouseover="alert(0)">
  2. <div id="0_1" onmouseover="alert(0)">
  3. <div id="0_2" onmouseover="alert(0)">
  4. <div id="1_0" onmouseover="alert(1)">
  5. <div id="1_1" onmouseover="alert(1)">
  6. <div id="1_2" onmouseover="alert(1)">
  7. <div id="2_0" onmouseover="alert(2)">
  8. <div id="2_1" onmouseover="alert(2)">
  9. <div id="2_2" onmouseover="alert(2)">


Jednak tak nie jest i w każdym elemencie mam alert(2) czyli ostatnią iteracją pętli "i"...

Wynika to pewnie z tego, że funkcja w rzeczywistości jest tworzona tylko w jednej kopii, a każdy element onmouseover odwołuje się do jej aktualnej i jedynej wersji czyli tak jakbym napisał:
  1. <div id="0_0" onmouseover="funkcja">
  2. <div id="0_1" onmouseover="funkcja">
  3. <div id="0_2" onmouseover="funkcja">
  4. ...


Może ktoś już miał podobny problem. Czy jest jakiś sposób, żeby to ująć w pętli i uzyskać oczekiwany efekt?

Ten post edytował slammer 1.12.2007, 16:17:29
Go to the top of the page
+Quote Post
BaN
post 1.12.2007, 17:25:18
Post #2





Grupa: Zarejestrowani
Postów: 158
Pomógł: 43
Dołączył: 9.11.2007

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


Kod
alert(this.id.substring(this.id.indexOf('_')+1))
Go to the top of the page
+Quote Post
slammer
post 1.12.2007, 18:29:21
Post #3





Grupa: Zarejestrowani
Postów: 187
Pomógł: 6
Dołączył: 31.08.2005
Skąd: Bielsko-Biała

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


dzięki wielkie

  1. alert(this.id.substring(this.id.indexOf('_')-1, this.id.indexOf('_')))


Pomogło

Ten post edytował slammer 1.12.2007, 18:29:48
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: 18.05.2025 - 15:47