alle <input id=myarray[1]> mittels JS auslesen?
michael
- javascript
Hallo,
wie kann ich mit Javascript alle Werte von Inputfeldern auslesen/testen die folgende IDs haben:
<input id='myArray[4]' type='checkbox' checked>
<input id='myArray[9]' type='checkbox'>
<input id='myArray[12]' type='checkbox'>
<input id='myArray[13]' type='checkbox' checked>
<input id='myID' type='checkbox' checked>
Mit PHP kann ich solche Arrays bequem auslesen aber bei JS mit z.B.
var myInputArray = document.getElementById('myArray'));
for(i=0; i<myInputArray.length; i++){
alert(myInputArray[i].checked);
}
klappt es nicht?!?
Was klappt:
alert(document.getElementById('myID').checked);
Hat jemand eine Ahnung?
Vielen Dank & Grüße
Michael
Hi,
schau mal bitte in SelfHTML nach, was die Namenskonvention für ID sind. Da darf kein [] drin auftauchen. Für den Zweck würde ich einen Namen mit [] und eine ID nur mit _ empfehlen, wenn du es so brauchst.
MfG
Rouven
hi,
var myInputArray = document.getElementById('myArray'));
Du hast (im geposteten Beispielcode) _keine einziges_ Elemenr mit der ID myArray.
gruß,
wahsaga
Du hast (im geposteten Beispielcode) _keine einziges_ Elemenr mit der ID myArray.
Ja, ich weiss (deswegen funktioniert es offensichtlich nicht), aber wenn ich die Formdaten so an PHP schicke generiert mir PHP ein schönes Array. Auf das ich einfach mittels $myArray[i] zugreifen kann.
Ich hoffe JS verfügt auch über soviel Luxus ;) und deswegen meine Frage: Wie kann ich es hinbekommen?
Hi,
Ja, ich weiss (deswegen funktioniert es offensichtlich nicht), aber wenn ich die Formdaten so an PHP schicke
wie soll das geschehen? Der Browser schickt keine ID an den Server.
generiert mir PHP ein schönes Array.
Dieser Mangel ist bekannt.
Ich hoffe JS verfügt auch über soviel Luxus ;)
Nein. JavaScript sieht IDs als das an, was sie sind: IDs.
und deswegen meine Frage: Wie kann ich es hinbekommen?
Indem Du die IDs (er-)kennst und einzeln abfragst. Übrigens ist es in aller Regel hinreichend unsinnig, IDs durchzunummerieren, da die Elemente augenscheinlich nicht bemerkenswert eindeutig sind. Überprüfe also die Sinnhaftigkeit Deiner Semantik.
Cheatah
Übrigens ist es in aller Regel hinreichend unsinnig, IDs durchzunummerieren, da die Elemente augenscheinlich nicht bemerkenswert eindeutig sind.
Hä?
Überprüfe bitte die Sinnhaftigkeit Deiner Semantik.
Hi,
Übrigens ist es in aller Regel hinreichend unsinnig, IDs durchzunummerieren, da die Elemente augenscheinlich nicht bemerkenswert eindeutig sind.
Hä?
was genau ist Dir unklar?
Überprüfe bitte die Sinnhaftigkeit Deiner Semantik.
Done.
Cheatah
hi,
Ja, ich weiss (deswegen funktioniert es offensichtlich nicht), aber wenn ich die Formdaten so an PHP schicke generiert mir PHP ein schönes Array. Auf das ich einfach mittels $myArray[i] zugreifen kann.
Gut, aber PHP ist nicht Javascript.
Ich hoffe JS verfügt auch über soviel Luxus ;) und deswegen meine Frage: Wie kann ich es hinbekommen?
Vergebe zunächst mal gültige IDs.
Und dann definiere bitte, was du "hinbekommen" willst - dann kommst du sicher auch der Lösung näher.
Willst du "alle Elemente mit der gleichen ID ermitteln" - nein, willst du nicht, weil die ID eindeutig zu sein hat.
Aber vielleicht möchtest du ja alle (Formular-)Elemente eines bestimmten Typs ansprechen.
Oder alle mit dem gleichen Namen.
Oder alle mit dem gleichen Tagnamen.
Oder alle, die eine bestimmtes class-Attribut besitzen.
Oder auch die, auf die eine Kombination mehrerer solcher Eigenschaften zutrifft ...
gruß,
wahsaga
Und dann definiere bitte, was du "hinbekommen" willst - dann kommst du sicher auch der Lösung näher.
na wie schon gesagt: ich will alle <inputs> bequem abfragen können. Hintergrund ist, dass alle InputIDs dynamisch generiert weden (da aus DB) und eine Abfrage allá:
for(i=diesenWertWeissIchNichtUndIstDeswegenUnCOOL1; i<diesenWertWeissIchNichtUndIstDeswegenUnCOOL2; i+=diesenWertWeissIchNichtUndIstDeswegenUnCOOL3){
if(document.getElementById("myID"+i)){
myArray[i]=document.getElementById("myID"+i).checked;
}
}
ziemlich problematisch ist. Meine IDs aus der DB sind mir unbekannt und nicht von 0 bis x durchnummeriert. Deswegen meine Frage wie ich bequem alle IDs abfragen kann?
grüße
michael
hi,
Und dann definiere bitte, was du "hinbekommen" willst - dann kommst du sicher auch der Lösung näher.
na wie schon gesagt: ich will alle <inputs> bequem abfragen können.
Wenn wir bereits festgestellt haben, dass die ursprüngliche Fargestellung zu undifferenziert war - hältst du es dann für hilfreich, sie nahezu unverändert zu wiederholen?
Ich hatte dich gebeten zu detailieren, was du mit "alle Inputs" meinst.
Dass du damit alle Elemente dieses Formulars meinen könntest, die von einem bestimmten Typ sind, hatte ich als Suggestivlösung schon mal vorgeschlagen.
Falls es das nicht oder nicht exakt trifft, waren noch andere Vorschläge zur Klassifizierung der fraglichen "Inputs" gegeben; des weiteren war die Möglichkeit der Kombination angedeutet worden. Und eigene Vorschläge dürfen auch weiterhin eingebracht werden.
gruß,
wahsaga
wie kann ich mit Javascript alle Werte von Inputfeldern auslesen/testen die folgende IDs haben:
<input id='myArray[4]' type='checkbox' checked>
<input id='myArray[9]' type='checkbox'>
Du meinst wohl name-Attribute, weil PHP wie gesagt mit Sicherheit nicht auf die id-Attribute reagieren kann, die werden nämlich nicht zum Server übertragen.
Du kannst alle Eingabefelder eines Formulars durchlaufen und jeweils abfragen, ob es zur myArray-Gruppe gehört:
for (i = 0; i < document.forms.Formular.elements.length; i++) {
// Beginnt der Name des Formularfeldes mit myArray?
if (document.forms.Formular.elements[i].name.indexOf("myArray") == 0)
// document.forms.Formular.elements[i] ist ein input-Element mit dem Namen myArray[x]
alert(document.forms.Formular.elements[i].checked);
}
(Mit <form name="Formular">.)