webForumDet fria alternativet

Ta reda på vilket obj som anropade funktion

4 svar · 176 visningar · startad av Andy

AndyMedlem sedan sep. 2001138 inlägg
#1

Kan man på något sätt ta reda på vilket objekt, eller element, på sidan som anropade funktionen. Säg att jag har flera div-taggar på sidan, som anropar en funktion på onmouseover. Går det att få reda på vilken av divarna som anropade funktionen, utan att behöva skicka in "this" som argument till funktionen?

solbulleMedlem sedan mars 20015 287 inlägg
#2

Tyvärr vet jag inte svaret, men lösningen för mig i ett liknande fall var att använda just this.

Varför går inte det?

AndyMedlem sedan sep. 2001138 inlägg
#3

Jag använder mig av settimeout, och eftersom jag använder this, tappas referensen till elementet bort:

Exempel:

this innehåller en referens till en div på sidan.

När jag använder setTimeout så här:

setTimeout('showChildNodes(this)',500)

så blir det tokigt. showChildNodes-funktionen vet ju inte vad this refererar till, eftersom det inte är div:ens id, eller namn (den har varken eller, förresten), utan just en referens till själva diven.

Problemet ligger väl i att setTimeout bara accepterar en sträng som första argument. Någon som vet varför det är så förresten?

PepeJeriaMedlem sedan feb. 2003774 inlägg
#4

Här skickas inte this med, utan event för att se vem som anropar:

<script type="text/javascript">
function tmp(e)
{
	var oElm = e.target || e.srcElement;
	alert(oElm.id);
}
</script>

<div id="a" onMouseOver="tmp(event);">div a</div>
<div id="b" onMouseOver="tmp(event);">div b</div>
<div id="c" onMouseOver="tmp(event);">div c</div>
Peter SMedlem sedan dec. 20025 483 inlägg
#5

Det du får göra är att skapa en global variabel som du sedan kopierar objektet i fråga till:

Exempel:

...
var global = null;

function showChildNodes(o){
     global = o;
     setTimeout("alert(global)", 500);
};
...
<div onmouseover="showChildNodes(this)"></div>

:)

129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)