Objektübergabe
js-newbie
- javascript
Hallo!
ich bin neu in java script und habe folgende frage:
nachdem ich mir das komplette Tutorial über java script gelesen habe,
habe ich versucht eine Funktion zu implementieren die ich in eine Webseite einbinden will.
Das ganze sieht so aus:
function emph(tr){
tr.bgColor="#FF0000";
window.setTimeout("change("+tr+")", 1000);
}
function change(tr){
tr.bgColor="#0000FF";
}
-->
</script>
</head>
<body>
<table border="2">
<tr onmouseover="emph(this)">
<td>a</td>
<td>b</td>
<td>c</td>
</tr>
<tr onmouseover="emph(this)">
<td>d</td>
<td>e</td>
</tr>
</table>
</body>
</html>
Zuerst wird bei einem mousover (bel. Elemente in diesem Fall Tabellenzeilen) die Hintergrundfarbe
geändert und dann soll nach einer Sekunde in der funktion change() die farbe erneut geändert werden.
Allerdings kann ich das tablerow- element tr nicht so ohne weiteres weiterreichen wie ich das von java
gewohnt bin weil hier eine Fehlermeldung erscheint dass tr nicht
existiert. also im Aufruf von setTimeout() kann das Object tr nicht an die funktion change(tr) weiter
gereicht werden. Was mache ich falsch, wäre super wenn mir da jemand weiterhelfen könnte
window.setTimeout("change("+tr+")", 1000);
dieses
"..." + tr + "..."
wird zu einem String. In einem String können keine Objekte vorkommen, folglich steht dort "... Objektbezeichnung ...".
Umgehen könntest du das, indem du vom Objekt "tr" die ID abfragst, diese ID als String übermittelst und in der Funktion change() den String wieder in ein Objekt umwandelst.
So würde ich das zumindest machen, ob es noch bessere Lösungen gibt, weiß ich nicht.
nachdem ich mir das komplette Tutorial über java script gelesen habe,
habe ich versucht eine Funktion zu implementieren die ich in eine Webseite einbinden will.
Das ganze sieht so aus:
function emph(tr){
tr.bgColor="#FF0000";
Diese eigenschaft solltest du nicht verwenden die ist veraltet.
window.setTimeout("change("+tr+")", 1000);
Du willst hier ein sogenanntes closure verwenden.
function emph(tr){
tr.style.backgroundColor = "#F00";
window.setTimeout( function() { change(tr)}, 1000);
}
function change(tr){
tr.style.backgroundColor = "#00F";
Struppi.
Alles klar, wieder was gelernt, super danke!