Argumente übergeben, onclick
Thomas Dose
- javascript
Hallo!
Mit einer javascript-Funktion "TabelleFuellen()" (siehe unten) erzeuge ich eine Tabelle.
Mit "onclick" soll beim Anklicken bestimmter Textstellen in der fertigen Tabelle eine Funktion "Test(x)" aufgerufen werden (hier der Einfachheit halber die Anzeige der Zeilennummer).
Diese Funktion soll als Argument die Zeilennummer enthalten, damit je nach Zeile eine unterschiedliche Reaktion erfolgen kann.
Wenn ich das wie unten programmiere, wird aber für alle Zeilen immer der Wert der letzten Zeile angegeben (Hier für alle Zeilen also die "8")!
Wer hat eine Idee, wie man es schafft, dass tatsächlich die Zeilennummer übergeben wird?
function TabelleFuellen() {
...
for (i=0; i < 9; i++) // Auswahltabelle fuellen
{
var TDneu04 = this.document.createElement("td");
TDneu04.setAttribute("id", ZellennameNeu_04);
var Pneu04 = this.document.createElement("p");
Pneu04.onclick = function(){Test(i)};
var Pneu04text = this.document.createTextNode(Unterschrift[i]);
Pneu04.appendChild(Pneu04text);
TDneu04.appendChild(Pneu04);
if (navigator.appName=='Microsoft Internet Explorer')
{Pneu04.style.cursor='hand'}
else {Pneu04.style.cursor='pointer'};
}
...
}
function Test(x) {alert(x);} // Test()
Hi,
Pneu04.onclick = function(){Test(i)};
Du koenntest mit einem Array arbeiten, dessen keys td-ids sind, und dessen values Deine Nummern ethalten:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<script type="text/javascript">
var cnt = new Array(); // hilfsarray
function doit() {
for (var i = 0; i < 9; i++) {
txt = document.createTextNode(i);
td = document.createElement("td");
td.appendChild(txt);
td.id = "td_" + i; // td id erzeugen
cnt["td_" + i] = i; // td id als key benutzen
td.onclick=function() {
alert(cnt[this.id]);
}
document.getElementById("tr").appendChild(td);
}
}
</script>
</head>
<body onload="doit()">
<table>
<tbody>
<tr id="tr">
</tr>
</tbody>
</table>
</body>
</html>
Gruesse, Joachim
Hallo,
Pneu04.onclick = function(){Test(i)};
Zum Beispiel
Pneu04.onclick = new Function("Test(" + i + ");");
oder
Pneu04.i = i; und this.id in der Funktion Test. Also den Wert einfach als Unterobjekt an den Elementknoten hängen.
Mathias
Hi,
Pneu04.i = i; und this.id in der Funktion Test. Also den Wert einfach als Unterobjekt an den Elementknoten hängen.
hmm, gelten da nicht auch die Regeln, nachdem die Benamung mit _ oder Buchstabe beginnen, nicht aber lediglich eine Number sein sollte... bin nicht sicher?
Gruesse, Joachim
Hallo,
Pneu04.i = i; und this.id in der Funktion Test. Also den Wert einfach als Unterobjekt an den Elementknoten hängen.
hmm, gelten da nicht auch die Regeln, nachdem die Benamung mit _ oder Buchstabe beginnen, nicht aber lediglich eine Number sein sollte... bin nicht sicher?
Der Name des Objekts, das an den Elemenknoten angehängt wird, ist »i«, lediglich der Wert ist vom Typ Number. Das ist erlaubt.
Ich meinte übrigens »this.i in der Funktion Test«, nicht »id«.
Mathias
Hi Mathias,
Der Name des Objekts, das an den Elemenknoten angehängt wird, ist »i«, lediglich der Wert ist vom Typ Number. Das ist erlaubt.
hab ich schlampig gelesen, ich geh ins Bett...
Nacht, Joachim
Hallo Mathias!
Pneu04.onclick = new Function("Test(" + i + ");");
Funktioniert super!
Danke
Thomas