Formular, welcher Button wurde gedrückt?
Marcel
- javascript
0 H-P Ortner0 Marcel0 H-P Ortner0 Marcel
0 wahsaga0 Marcel
Hallo zusammen,
ich habe einige Schaltflächen vom Typ <input type="button" />. Ich möchte nun, da ich zur Zeit noch nicht absehen kann, wieviele es werden, eine Funktion erstellen, mit deren Hilfe ich auswählen kann, welcher Button gedrückt wurde. Mit anderen Worten:
Eine unbekannte Anzahl von Buttons befinden sich nebeneinander. Jeder einzelne soll eine eigene Statistik aufrufen. Diese Statistiken befinden sich alle innerhalb einer PHP Datei. Je nachdem welcher Button gedrückt wurde, soll die passende Statistik aufgerufen werden. Ich könnte nun jedem Button einen Wert zuweisen, z. B. onClick="showStats('xyz')". Wenn ich aber nun hunderte von Statistiken und damit hunderte Buttons hätte, müsste ich auch hunderte if Abfragen machen, welche Statistik denn nun aufgerufen werden soll. Von daher suche ich etwas, was mir das 'xyz' abnimmt. Also etwas wie:
<input type="button" id="1" onClick="ShowStats();" /> und nach Aufruf von showStats() erhalte ich, "Button mit Id 1 wurde gedrückt, Statistik mit Id 1 wird aufgerufen."
Ich hoffe, ich konnte mein Problem so halbwegs erklären und es hat jemand einen Tip oder gar eine Lösung parat.
Gruß,
Marcel
Hallo Marcel!
...Ich könnte nun jedem Button einen Wert zuweisen, z. B. onClick="showStats('xyz')". Wenn ich aber nun hunderte von Statistiken und damit hunderte Buttons hätte, müsste ich auch hunderte if Abfragen machen, welche Statistik denn nun aufgerufen werden soll. Von daher suche ich etwas, was mir das 'xyz' abnimmt. Also etwas wie:
<input type="button" id="1" onClick="ShowStats();" /> und nach Aufruf von showStats() erhalte ich, "Button mit Id 1 wurde gedrückt, Statistik mit Id 1 wird aufgerufen."
Ich hoffe, ich konnte mein Problem so halbwegs erklären und es hat jemand einen Tip oder gar eine Lösung parat.
Ich fürchte ich hab dein Problem nicht verstanden:
<head>
<title>Test</title>
<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1">
<script language="JavaScript" type="text/javascript">
<!--
function showStats(iD){
alert("Button mit Id " + iD + " wurde gedrückt, Statistik mit Id " + iD + " wird aufgerufen.");
}
-->
</script>
</head>
<body>
<input type="button" name="1" onClick="showStats(1);" value="Statistik anzeigen"/>
<input type="button" name="2" onClick="showStats(2);" value="Statistik anzeigen"/>
</body>
Viele Grüße
H-P Ortner
Jain,...
also so etwas in der Art hatte ich mir auch überlegt, aber wieder verworfen, weil ich jedesmal den Namen in showStats('Name'); angeben müsste. Wenn ich die Seite, insbesondere die input-Felder über ein PHP Script erstellen möchte, könnte ich dieser Stelle wieder Probleme mit der for-Schleife bekommen. In der anderen Antwort auf meine Frage steht etwas von "this" und das scheint mir an dieser Stelle ein Stück passender und näher am Problem. Hab allerdings noch bislang noch nicht mit this gearbeitet und es mir nur eben flüchtig angeschaut. Ich werde daher wohl beide Wege versuchen und schauen, welcher mich besser zur Lösung bringt.
Danke für die Antwort. Gruß,
Marcel
Hallo Marcel!
also so etwas in der Art hatte ich mir auch überlegt, aber wieder verworfen, weil ich jedesmal den Namen in showStats('Name'); angeben müsste.
...
In der anderen Antwort auf meine Frage steht etwas von "this" und das scheint mir an dieser Stelle ein Stück passender und näher am Problem.
Tja wahsaga ist eben ein alter Fuchs - wie gefällt dir das:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Test</title>
<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1">
<script language="JavaScript" type="text/javascript">
<!--
function showStats(iD){
alert("Button mit Id " + iD.name + " wurde gedrückt, Statistik mit Id " + iD.name + " wird aufgerufen.");
}
-->
</script>
</head>
<body>
<input type="button" name="1" onClick="showStats(this);" value="Statistik anzeigen"/>
<input type="button" name="2" onClick="showStats(this);" value="Statistik anzeigen"/>
</body>
</html>
Viele Grüße
H-P Ortner
Hallo Marcel!
[...]
Tja wahsaga ist eben ein alter Fuchs - wie gefällt dir das:
[...]
<input type="button" name="1" onClick="showStats(this);" value="Statistik anzeigen"/>
[...]Viele Grüße
H-P Ortner
Sollte es tatsächlich so einfach sein? Wenn ja, ist es genau das, wonach ich gesucht habe. Danke schön.
Gruß,
Marcel
hi,
Ich könnte nun jedem Button einen Wert zuweisen, z. B. onClick="showStats('xyz')". Wenn ich aber nun hunderte von Statistiken und damit hunderte Buttons hätte, müsste ich auch hunderte if Abfragen machen, welche Statistik denn nun aufgerufen werden soll. Von daher suche ich etwas, was mir das 'xyz' abnimmt. Also etwas wie:
<input type="button" id="1" onClick="ShowStats();" /> und nach Aufruf von showStats() erhalte ich, "Button mit Id 1 wurde gedrückt, Statistik mit Id 1 wird aufgerufen."
Abgesehen davon, dass "1" keine gültige ID darstellt - übergebe einfach jedes mal this als Parameter an die Funktion, dann hast du darüber Zugriff auf den jeweiligen Button, auf dem der Event ausgelöst wurde, und kannst darüber auf seine ID zugreifen.
Und wenn du die Eventhandler nicht statisch im HTML notierst, sondern dynamisch per Javascript zuweist, dann kannst du sogar auf den Parameter verzichten, und hast per this in der Funktion Zugriff auf das auslösende Element.
gruß,
wahsaga
Abgesehen davon, dass "1" keine gültige ID darstellt - übergebe einfach jedes mal this als Parameter an die Funktion, dann hast du darüber Zugriff auf den jeweiligen Button, auf dem der Event ausgelöst wurde, und kannst darüber auf seine ID zugreifen.
Und wenn du die Eventhandler nicht statisch im HTML notierst, sondern dynamisch per Javascript zuweist, dann kannst du sogar auf den Parameter verzichten, und hast per this in der Funktion Zugriff auf das auslösende Element.
gruß,
wahsaga
Das klingt wonach ich gesucht habe. :-) Hab allerdings noch nie mit "this" gearbeitet und bin daher nicht ganz sicher, ob das so klappt, wie ich es brauche. Im Beispiel von selfhtml.org (Quelle: http://de.selfhtml.org/javascript/sprache/objekte.htm#this ) steht:
"this.form.Feld.value"
Da stellt sich mir die Frage, ob ich dann bei einem Button dann schreibe:
this.form.button1.value (wobei button1 dann dem Namen des input-Feldes entspricht.) Was übergibt das dann an meine Funktion? Den value, der im input-Feld steht, den Namen des input-Feldes oder ein TRUE?
Gruß,
Marcel