webForumDet fria alternativet

Problem med funktioner

4 svar · 338 visningar · startad av Nianbig

NianbigMedlem sedan feb. 200616 inlägg
#1

Jag har följande kod:

<div id="element_0">
   element 1
</div>

<div id="element_1">
   element 2
</div>

<script type="text/javascript">
<!--

   var obj = document.getElementsByTagName("div");

   for( var i = 0; i < obj.length; i++ )
   {
      document.getElementById("element_"+ i).onclick = function () { alert(i) }
   }

// -->
</script>

Där jag vill aktivera "onClick" för respektive DIV-element.
Men jag lyckas inte. Om ni provar skriptet i en webbläsare så ser ni att variabeln i som jag skriker ut när man klickar på respektive, blir 2 i båda fallen. Hur i "#¤# kan den bli det?
Det kan inte vara någon specifik webbläsarbugg då det blir samma i Opera, IE och Firefox.

Jag har provat att sätta "setAttribute('onClick.." också men den fungerar inte i IE.

Jag vill inte göra det så lätt att jag sätter onMouseOver direkt i DIV-taggen, utan jag vill göra det med hjälp av javascript.

Vore tacksam för hjälp!

M@rtinMedlem sedan dec. 19992 085 inlägg
#2

Ser bra ut.

Testa att byta:
document.getElementById("element_"+ i).onclick = function () { alert(i) }
Mot:
obj*.onclick = function () { alert(i) }*

NianbigMedlem sedan feb. 200616 inlägg
#3

Det gör ingen skillnad tyvärr...

Peter SMedlem sedan dec. 20025 483 inlägg
#4

M@rtin har rätt - använd obj.onclick. Däremot kommer du inte att kunna alert():a 'i' på det viset; för vad är egentligen 'i'?

Du kan ju spara undan värdet i en array eller så innan du sätter onclick-attributet, eller

alert(this.id.match(/\d+$/))
NianbigMedlem sedan feb. 200616 inlägg
#5

Tack för era tips, detta löste mitt problem:

... = new Function("alert(" + i + ")")
129 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)