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?
Ta reda på vilket obj som anropade funktion
4 svar · 176 visningar · startad av Andy
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?
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?
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>
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>
:)