getElementBy
heinetz
- javascript
Hallo Forum,
bevor ich irgendwelche Scheifen programmiere, die u.U.
überflüssig sind:
<input name="eingabe" />
MyObj = document.forms[0].elements['eingabe'];
... und dann würde ich gerne auf MyObj Methoden anwenden,
als hätte ich MyObj über document.getElementById('eingabe')
belegt. Z.B. :
MyObj.insertBefore()
Ich mutmasse, dass ich das nicht einfach so machen kann,
weil ich das element des Forms zu fassen habe und nicht
das Objekt im Dokumentbaum.
Die Frage ist also:
Wie komme ich über das element im Form an das Objekt im
Dokumentbaum ?
danke für tipps und
beste gruesse,
heinetz
@@heinetz:
nuqneH
Ich mutmasse, dass ich das nicht einfach so machen kann,
weil ich das element des Forms zu fassen habe und nicht
das Objekt im Dokumentbaum.
Du hast wirklich Mut in Massen. Man könnte auch sagen: Tollkühnheit. Mut in Maßen wären angebracht.
Wie komme ich über das element im Form an das Objekt im
Dokumentbaum ?
Du hast es bereits.
Qapla'
ja ja, wie recht ihr habt ;) ich hätte nicht damit gerechnet,
dass das geht und habe den Beitrag daher geschrieben, bevor
ich's ausprobierte. Sorry für diese überflüssige Frage!
heinetz
Hallo,
MyObj = document.forms[0].elements['eingabe'];
... und dann würde ich gerne auf MyObj Methoden anwenden, als hätte ich MyObj über document.getElementById('eingabe') belegt. Z.B. :
MyObj.insertBefore()
auf welchem der vielen möglichen Wege du die Referenz auf ein Elementobjekt bekommst, ist völlig wurscht. Ob mit getEmelentById() oder forms[].elements[], letztendlich verweisen sie auf dasselbe Objekt.
Ich mutmasse, dass ich das nicht einfach so machen kann, weil ich das element des Forms zu fassen habe und nicht das Objekt im Dokumentbaum.
Es gibt keinen Unterschied.
Die Frage ist also:
Wie komme ich über das element im Form an das Objekt im Dokumentbaum ?
Die erübrigt sich damit. Das überschüssige Leerzeichen ebenso.
Ciao,
Martin
hi,
Wenn Du magst, kannste ja hier mal weiterschreiben
// Serialize
function readForm(){
var params = new Array();
var inputfields = document.getElementsByTagName('input');
for(var i=0; i < inputfields.length; i++){
if(inputfields[i].type == 'text'){
params.push(inputfields[i].name + '=' + encodeURIComponent(inputfields[i].value));
}
else if( inputfields[i].type == 'radio' ){
if(inputfields[i].checked == true) params.push(inputfields[i].name + '=' + inputfields[i].value);
}
else if(inputfields[i].type == 'checkbox'){
if(inputfields[i].checked == true) params.push(inputfields[i].name + '=' + inputfields[i].value);
}
}
var textas = document.getElementsByTagName('textarea');
for(var i=0; i < textas.length; i++){
params.push(textas[i].name + '=' + encodeURIComponent(textas[i].innerHTML));
}
return params.join('&');
}
Da fehlen noch die Selects ;-)
Hotti
Hi,
MyObj = document.forms[0].elements['eingabe'];
Wenn es mehrere Elemente mit name='eingabe' gibt *), hast Du hier nicht ein Element, sondern eine Collection.
Hat man hier nicht sogar immer eine Collection? So daß man das erste (und ggf. einzige) Element erst noch mit [0] holen muß?
*) z.B. bei radiobuttons.
cu,
Andreas
Hi,
Hat man hier nicht sogar immer eine Collection?
völlig richtig: Die hat man nicht sogar immer.
Cheatah
moin,
*) z.B. bei radiobuttons.
Du meinst checkbox und multiple select. Bei mehreren radiobuttons mit gleichen Namen ist es so, dass der Browser nur den value desjenigen radiobuttons überträgt, der zum Zeitpunkt des Submit das Attribut checked hat und das ist bei radiobuttons nur Einer.
Eine JS-Funktion, die ein Formular ausliest für Ajax etwa, sollte das genauso tun wie ein Browser.
Hotti
*) z.B. bei radiobuttons.
Du meinst checkbox und multiple select. Bei mehreren radiobuttons mit gleichen Namen ist es so, ...
und bei allen anderen Formularelementen ist es auch so.
Struppi.
Hi,
*) z.B. bei radiobuttons.
Du meinst checkbox und multiple select.
Nein, meine ich nicht.
Bei mehreren radiobuttons mit gleichen Namen ist es so, dass der Browser nur den value desjenigen radiobuttons überträgt,
Es geht doch hier gar nicht um die Übertragung, sondern auf die Elemente im DOM.
cu,
Andreas
hi,
Es geht doch hier gar nicht um die Übertragung, sondern auf die Elemente im DOM.
Naja, wenn das so ist, also, in sonem Fall würde ich da den Formularelementen nicht allen den gleichen Namen geben ;-)
Hotti
Hi,
Es geht doch hier gar nicht um die Übertragung, sondern auf die Elemente im DOM.
Naja, wenn das so ist, also, in sonem Fall würde ich da den Formularelementen nicht allen den gleichen Namen geben ;-)
Was bei Radio-Buttons, die eine Gruppe bilden sollen, ja auch wieder furchtbar clever wäre ...
MfG ChrisB