getElementsByName() mit dem IE
Tim
- javascript
0 wizz990 Tim0 Gunnar Bittersmann0 Tim
0 Gernot Back0 wizz99
Hallo Forum,
es tut mir leid, dass ich so eine primitive Frage stellen muss,
aber ich verstehe einfach nicht wieso mir der IE bei folgendem
Code _nicht_ die Anzahl vorhandener Elemente nennen will bzw.
sagt sie sei 0. Im Firefox läuft alles bestens:
<script language="JavaScript" type="text/javascript">
function countFlex() {
alert(document.getElementsByName("flex").length);
}
</script>
<DIV name="flex"> Blue </DIV>
<DIV name="flex"> Red </DIV>
<DIV name="flex"> Green </DIV>
<input type="button" value="count" onClick="countFlex()">
Bin ich einfach zu blind?
Danke für Eure Bemühungen
Tim
hallo,
das attribut "name" ist an sich eher gedacht für formular-elemente, z.b <input>. mit hilfe des "name"-attributes wird dann eine variable übergeben beim absenden des formulars, <input type="text" name="test" value="nummer1"> würde dann bei einem php-script z.b. index.php?test=nummer1 ergeben.
dafür sind name-attribute eher gedacht. du solltest es vielleicht besser mit dem attribut "id" versuchen. jedoch musst du dabei beachten, dass jede id nur einmal pro dokument vorkommen darf.
ach so, ich habe deinen quellcode mal geändert, und zwar so:
<script language="JavaScript" type="text/javascript">
function countFlex() {
alert(document.getElementsByName("flex").length);
}
</script>
<input name="flex">
<input name="flex">
<input name="flex">
<input type="button" value="count" onClick="countFlex()">
und siehe da - es wird "3" ausgegeben.
mfg,
wizz99
Danke für deine Antwort.
Doch habe ich mir das doch ein wenig anders vorgestellt ;-)
Wie gehe ich denn dann jetzt vor, möchte ich die anzahl vorhandener Divs zählen?
mfg
Tim
Wie gehe ich denn dann jetzt vor, möchte ich die anzahl vorhandener Divs zählen?
Tim,
Was gibt's denn noch für getElementsBy...-Methoden?
Gunnar
Hallo,
Was gibt's denn noch für getElementsBy...-Methoden?
Ratespielchen zu später Stund ;-) Ich war mir der Option
[..]byTagName bereits bewusst, doch dachte ich, dass es
einen schnellere (schnell im sinne von weniger code) Weg
geben müsste.
Aber danke dennoch für den Denkanstoß..
mfg
Tim
Hallo Tim,
Danke für deine Antwort.
Doch habe ich mir das doch ein wenig anders vorgestellt ;-)
Wie gehe ich denn dann jetzt vor, möchte ich die anzahl vorhandener Divs zählen?
Wie wäre es denn da mit getElementsByTagName()?
Wenn du nur bestimmte DIVs zählen willst, kannst du diese auch alle ihrerseits wieder in ein bestimmtes DIV packen und die Methode nur darauf anwenden.
Gruß Gernot
Hallo Gernot,
Danke Dir für deine Antwort. So werde ich es jetzt realisieren.
Schönes Wochenende euch allen..
Tim
Hallo Gernot,
habe es jetzt auf die von dir geschlderte Art und Weise gemacht.
Nun läufts im IE, doch die vernünftigen Browser melden, dass es
keine parent Element gibt:
<HTML>
<HEAD><TITLE>Dynamic Form</TITLE>
<script language="JavaScript" type="text/javascript">
function showFlexibleText(theId) {
divtags = document.getElementsByTagName("DIV");
for(i=0; i<divtags.length; i++ ) {
//is in fieldset?
if(divtags[i].parentElement) {
if(divtags[i].parentElement.id!="borderpanel")
continue;
if(divtags[i].id==theId)
divtags[i].style.display = "block";
else
divtags[i].style.display = "none";
}
}
}
</script>
</HEAD>
<BODY>
<select onChange="showFlexibleText(this.value)">
<option value=1> Just Text about Blue </option>
<option value=2> Just Text about Red </option>
<option value=3> Just Text about Green </option>
</select>
<p>
<fieldset name=me id=borderpanel style="width:300px;"><legend>My dynamic Text</legend>
<DIV name="flextext" id=1> Blue is a hopefull Color </DIV>
<DIV name="flextext" id=2 style="display:none;"> Red is the Color of Love and Hate </DIV>
<DIV name="flextext" id=3 style="display:none;"> Green is the Color of SmokingStuff </DIV>
</fieldset>
</BODY>
</HTML>
es ist zum verrückt werden mit diesen Browserunterschieden.
mfg
Tim
Hallo,
habe es jetzt auf die von dir geschlderte Art und Weise gemacht.
Nun läufts im IE, doch die vernünftigen Browser melden, dass es
keine parent Element gibt:
Verwende parentNode statt parentElement, was auch im IE funktioniert.
<DIV name="flextext" id=1> Blue is a hopefull Color </DIV>
ID-Werte muessen mit einem Buchstaben beginnen.
BTW: Im DOM-Bereich nehmen sich die Browser wenig, insofern ist da keiner unvernuenftig oder eben alle.
MfG, Thomas
document.getElementsByTagName().length
siehe auch:
http://de.selfhtml.org/javascript/objekte/document.htm#get_elements_by_tag_name
würde in deinem falle aber voraussetzen, dass du keine weiteren divs in deinem dokument hast, ansonsten musst du die abfrage eingrenzen.