• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[GELÖST] Variable in getElementById

broiler1985

New member
Hi!

Ist es möglich eine Variable in getElementById zu verwenden?

HTML:
            for (i = 0; i < 3; i++) {
                document.getElementById("apo" + i + "name").disabled = false;
                document.getElementById("apo" + i + "street").disabled = false;
                document.getElementById("apo" + i + "plz").disabled = false;
                document.getElementById("apo" + i + "city").disabled = false;
                document.getElementById("apo" + i + "phone").disabled = false;
            }

Mein Code funktionier leider nicht.

Danke!
 
Zuletzt bearbeitet von einem Moderator:
Hi!

Console sagt nur
"Uncaught TypeError: Cannot set property 'disabled' of null(…)".
 
Zuletzt bearbeitet von einem Moderator:
Ganz popelige input-felder in einem Formular. Wenn ich die IDs Händisch eintrage z.B.
document.getElementById("apo1phone").disabled = false;
funktioniert das Ganze auch Problemlos.

Ich denke dass der irgendwie nicht mit zusammengesetzten String zurecht kommt.
 
Das mit den zusammengesetzten Strings müsste schon gehn.
Hast du auch ein apo0phone?

Versuch es mal so
Code:
  var apo = document.querySelectorAll('form input[type="text"]');
  for(var i = 0;i < apo.length;i++)
  {
  apo[i].disabled=false;
  apo[i].value = "test";
  }

dabei kannst du dir auch noch die Id's sparen.
 
Wenn du nicht sicherstellen kannst, dass die Elemente auch existieren, würde ich entweder vor dem Zugirff auf .disabled prüfen, ob das Element gefunden wurde, oder mit querySelectorAll arbeiten - aber mit einem etwas feingranulareren Selektor als der von andreax. Z.B. [id^=apo][id$=name]

Code:
            for (i = 0; i < 3; i++) {
                var nameNode = document.getElementById("apo" + i + "name");
                if (nameNode){
                	nameNode.disabled = false;
                }
                // ...
            }
 
Hallo Zusammen!

Vielen, vielen Dank schon mal für die ganzen Antworten.
Das Problem ist mittlerweile gelöst. Und wie so Oft saß das Problem vor der Tastatur.

Denn: Wenn ich in der for-schleife bei 0 anfange, sollten die Elemente auf der Seite ebenfalls bei 0 anfangen und nicht bei 1. Autsch.
 
Ich würde trotzdem das Skript so flexibel machen, dass es mit solchen "Fehlern" umgehen kann. Dann hast du später viel weniger Wartungsaufwand, wenn sich andem HTML doch noch mal was ändert.
 
Zurück
Oben