input elemente als array - eventhandler aendern
Lynky
- javascript
0 Gernot Back0 Struppi
Hi,
versuche schon seit ueber 3 Stunden ein Skript zum Laufen zu kriegen *haarerupf*.
Es sollen dabei dynamisch input elemente erzeugt und ihnen sollen spezifische evenhandler funktionen zugewiesen werden. Hier der Code:
<--------------------------------------------------schnipp>
<script language="javascript">
var row = 1;
function AddRow() {
document.getElementById('space').innerHTML += document.getElementById('content').innerHTML;
document.forms['rowform'].elements['testbox[]'][row].onfocus = "alert('I am row no. " + row + "')";
row++;
}
</script>
<form name="rowform">
<a href="Javascript:AddRow();" target="_self">add row below</a>
<BR>
<div id="space">
<input type="text" name=testbox[] id=testbox[] onfocus="alert('I am row no. 0')"><BR>
</div>
</form>
</--------------------------------------------------schnipp>
<div id="content" style="position:absolute;left:0px;top:0px;visibility:hidden">
<input type="text" name=testbox[]><BR>
</div>
Das hinzufuegen von Reihen klappt. Das Ausfuehren des Events klappt im IE falsch (warum???) und in Mozilla gar nicht.
Bitte helft! Danke im voraus,
Lynky
Hallo Lynky,
<input type="text" name=testbox[] id=testbox[] onfocus="alert('I am row no. 0')"><BR>
Na, ob das gut gehen kann mit den eckigen Klammern hinter dem Namens- und dem ID-Attribut, noch dazu ohne Anführungszeichen zugewiesen. Wozu diese komische Bezeichnung?
Ich würde ja ohnehin in deinem Fall eher mit dem Node-Objekt arbeiten. Da kannst du Eventhandler und andere Attribute viel eleganter zuweisen.
Gruß Gernot
Hi Gernot,
Wozu diese komische Bezeichnung?
habe mir das von jemanden sagen lassen, so dass die Elemente als Array angesprochen werden.
Danke fuer den Tipp mit dem Noteobjekt, werde mich da mal vertiefen!
Gruesse,
Philipp
Hi,
<input type="text" name=testbox[] id=testbox[] onfocus="alert('I am row no. 0')"><BR>
Na, ob das gut gehen kann mit den eckigen Klammern hinter dem Namens- und dem ID-Attribut, noch dazu ohne Anführungszeichen zugewiesen. Wozu diese komische Bezeichnung?
Beim name-Attribut kein Problem (außer den Anführungszeichen), bei id definitiv nicht zulässig:
ID [...] tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").
cu,
Andreas
<script language="javascript">
hier fehlt schon mal das type Attribut und das language kannst du getrost weglassen.
var row = 1;
function AddRow() {
document.getElementById('space').innerHTML += document.getElementById('content').innerHTML;
document.forms['rowform'].elements['testbox[]'][row].onfocus = "alert('I am row no. " + row + "')";
Ein Eventhandler (on....) erwartet eine Funktionsreferenz und keinen String.
Entweder:
onfocus = Funktion; (ohne Klammern!!!!)
onfocus = function() { ..... };
onfocus = new Funktion(.....);
Ich würde solche Elemente eher mit
http://de.selfhtml.org/javascript/objekte/document.htm#create_element
http://de.selfhtml.org/javascript/objekte/node.htm#append_child
einfügen, das ist einfacher.
<div id="space">
<input type="text" name=testbox[] id=testbox[] onfocus="alert('I am row no. 0')"><BR>
Wie schon erwähnt, immer Anführungszeichen um HTML Attribute machen.
Struppi.