HighDots Forums  

element_id eines Formularfeldes ermitteln

Javascript (German) Programmiersprache JavaScript. (de.comp.lang.javascript)


Discuss element_id eines Formularfeldes ermitteln in the Javascript (German) forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
Dennis Schmidt
 
Posts: n/a

Default element_id eines Formularfeldes ermitteln - 02-16-2005 , 02:05 PM






Hallöle,
Ist es möglich die ID eines beliebigen Formularelementes (also z.B.
select) mit JavaScript zu ermitteln?

Den Inhalt eines Elements kann ich ja (z.B. beim draufklicken) mit
this.value ermitteln. Ich dachte da jetzt für die ID an sowas wie this.id.

Reply With Quote
  #2  
Old   
Martin Honnen
 
Posts: n/a

Default Re: element_id eines Formularfeldes ermitteln - 02-16-2005 , 02:09 PM








Dennis Schmidt wrote:


Quote:
Ist es möglich die ID eines beliebigen Formularelementes (also z.B.
select) mit JavaScript zu ermitteln?

Den Inhalt eines Elements kann ich ja (z.B. beim draufklicken) mit
this.value ermitteln. Ich dachte da jetzt für die ID an sowas wie this.id.
Dann nimm es doch. Mit alten Browsern wie Netscape 4 wird das undefined
sein, aber in neueren Browsern ist die Eigenschaft implementiert:
<http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-63534901>

--

Martin Honnen
http://JavaScript.FAQTs.com/


Reply With Quote
  #3  
Old   
Dennis Schmidt
 
Posts: n/a

Default Re: element_id eines Formularfeldes ermitteln - 02-16-2005 , 02:18 PM



Martin Honnen schrieb:
Quote:

Dennis Schmidt wrote:


Ist es möglich die ID eines beliebigen Formularelementes (also z.B.
select) mit JavaScript zu ermitteln?

Den Inhalt eines Elements kann ich ja (z.B. beim draufklicken) mit
this.value ermitteln. Ich dachte da jetzt für die ID an sowas wie
this.id.


Dann nimm es doch. Mit alten Browsern wie Netscape 4 wird das undefined
sein, aber in neueren Browsern ist die Eigenschaft implementiert:
http://www.w3.org/TR/DOM-Level-2-HTM...ml#ID-63534901

Sry, Hab mich wohl zu ungenau ausgedrückt.
Mit ID meinte ich jetzt nicht die HTML-ID, sondern die ID, also
durchgehende Nummer des jeweiligen Formularelements. Also die Nummer,
die man braucht um dieses Element mit
window.document.forms["name"].elements[ID] anzusprechen. Wobei ID dann
eben die Zahl des Feldes ist


Reply With Quote
  #4  
Old   
Martin Honnen
 
Posts: n/a

Default Re: element_id eines Formularfeldes ermitteln - 02-16-2005 , 02:32 PM





Dennis Schmidt wrote:


Quote:
Mit ID meinte ich jetzt nicht die HTML-ID, sondern die ID, also
durchgehende Nummer des jeweiligen Formularelements. Also die Nummer,
die man braucht um dieses Element mit
window.document.forms["name"].elements[ID] anzusprechen. Wobei ID dann
eben die Zahl des Feldes ist
Wenn du das Element selbst, also this hast, dann uebergib es direkt an
eine Funktion, da ist es nicht noetig, einen Index zu uebergeben und
dann wieder vom Index das Element zu suchen.
So du wirklich den Index in einer Kollektion haben willst, dann musst du
die Kollektion durchlaufen also
function getIndex (collection, element) {
for (var i = 0; i < collection.length; i++) {
if (element === collection[i]) {
return i;
}
}
return -1;
}

<input onclick="var index = getIndex(this.form.elements, this);"
--

Martin Honnen
http://JavaScript.FAQTs.com/


Reply With Quote
  #5  
Old   
Dennis Schmidt
 
Posts: n/a

Default Re: element_id eines Formularfeldes ermitteln - 02-16-2005 , 02:39 PM



Martin Honnen schrieb:
Quote:

Dennis Schmidt wrote:


Mit ID meinte ich jetzt nicht die HTML-ID, sondern die ID, also
durchgehende Nummer des jeweiligen Formularelements. Also die Nummer,
die man braucht um dieses Element mit
window.document.forms["name"].elements[ID] anzusprechen. Wobei ID dann
eben die Zahl des Feldes ist


Wenn du das Element selbst, also this hast, dann uebergib es direkt an
eine Funktion, da ist es nicht noetig, einen Index zu uebergeben und
dann wieder vom Index das Element zu suchen.
So du wirklich den Index in einer Kollektion haben willst, dann musst du
die Kollektion durchlaufen also
function getIndex (collection, element) {
for (var i = 0; i < collection.length; i++) {
if (element === collection[i]) {
return i;
}
}
return -1;
}

input onclick="var index = getIndex(this.form.elements, this);"

Hmm, schade... Dachte das ginge "eleganter".
Hab da aber noch ne (allgemeine) Frage zu deinem Vorschlag.
Wieso vergleichst du die beiden Objekte mit === und nicht nur ==?
Ich dachte immer dass === wäre nur da, um Boolsche Werte korrekt zu
vergleichen. Also dass z.B.

alert((true === 1) ? "gleich" : "ungleich");

nicht "gleich", sondern "ungleich" liefert.


Reply With Quote
  #6  
Old   
Daniel Kirsch
 
Posts: n/a

Default Re: element_id eines Formularfeldes ermitteln - 02-17-2005 , 06:12 AM



Dennis Schmidt wrote:
Quote:
Hmm, schade... Dachte das ginge "eleganter".
this zu übergeben ist elegant.


Reply With Quote
  #7  
Old   
Martin Honnen
 
Posts: n/a

Default Re: element_id eines Formularfeldes ermitteln - 02-17-2005 , 07:00 AM





Dennis Schmidt wrote:

Quote:
Martin Honnen schrieb:


input onclick="var index = getIndex(this.form.elements, this);"

Dachte das ginge "eleganter".
Wie Daniel schon gesagt hat, und ich ja auch schon vorher vorgeschlagen
hatte, den Index benoetigt man nicht, wenn man, wo noetig, einfach die
Objekte selbst uebergibt.
So du also fuer eine aus deiner Sicht elegante Loesung den Index haben
willst,
dann musst du den herausfinden, schliesslich kann ein Element im
Dokument seine
Position veraendern.

Quote:
Wieso vergleichst du die beiden Objekte mit === und nicht nur ==?
Warum nicht? Ich will Objektidentitaet vergleichen, warum also == nehmen
und die JavaScript-Runtime erst zur Typpruefung zwecks evtl. noetiger
Konvertierung zwingen? Es gab mal Zeiten, wo === noch nicht von allen
gaengigen Browsern implementiert wurde, so dass man == verwendet hat,
aber so ich auf Identitaet vergleichen will und nicht fuer jemanden
schreibe, der explizit auf sehr alte Browser hinweist, nehme ich ===.

Quote:
Ich dachte immer dass === wäre nur da, um Boolsche Werte korrekt zu
vergleichen. Also dass z.B.

alert((true === 1) ? "gleich" : "ungleich");

nicht "gleich", sondern "ungleich" liefert.
Boolesche Werte in JavaScript sind true und false, 1 ist eine Zahl.
== schaut sich die Operanden an und konvertiert diese unter Umstaenden
in einen anderen Typ, nicht nur bei true und 1. === nimmt keine
Typkonvertierung vor.

--

Martin Honnen
http://JavaScript.FAQTs.com/


Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.