Javascript Problemchen (document.getElementByID())

balufreak

balufreak

Aktives Mitglied
Thread Starter
Dabei seit
12.10.2003
Beiträge
1.563
Reaktionspunkte
28
Hallo Leute!
Irgendwie will heute wiedermal gar nichts so wie ich will. Darum die frage an euch.
Ich habe folgende JavaScript funktion
Code:
  function disableFields() {
    var fields = new Array("valSps");
      for (f in fields) {
      eval("document.getElementById('"+fields[f]+"').setAttribute(\"readonly\", \"readonly\");");
    }  
  
  }
  
  window.onload = disableFields();

Weiter unten im HTML-Code habe ich denn auch das Feld dazu
HTML:
<input type="text" value="PLC13" id="valSps" />

Warum funktioniert das Javascript nich? Die FF-Errorkonsole meldet immer: "document.getElementById("valSPS") has no properties.

wo steh ich aufm schlauch?
 
Ich habs jetzt so gemacht, dass ich die Funktion nicht mit dem onloadevent aufrufe sondern am schluss vor dem body tag das eingefügt habe:
Code:
<script type="text/javascript">
disableFields();
</script>

Dann funktionierts
 
Vielleicht liegts an der Groß und Kleinschreibung.
Die ist bei dem HTML-Code und bei der Fehlermedlung unterschiedlich :)

PS.: Der Foren-PHP-Tag formatiert auch JavaScript mit Farben ;)

gruß
Lukas

EDIT:

Ok...
Ich lag falsch...

Aber die Lösung ist im Grunde auch klar... Steht das JavaScript im Kopfbereich, wird es dennoch sobald der Browser auf JS kommt, interpretiert.
Auch, wenn der restliche Part der Seite noch nicht geladen ist, und somit einige Elemente noch nicht da sind. :)
(Wie oft bin ich da schon drüber gestolpert -.- )
 
Hi,
Code:
window.onload = disableFields();

damit wird es nicht funktionieren, weil Du so die Funktion sofort aufrufst und window.onload den Rückgabewert der Funktion zuweist. Du meinst sicher
Code:
window.onload = disableFields;

Das eval kannst Du Dir in der Funktion auch sparen und direkt schreiben
Code:
document.getElementById(fields[f]).setAttribute("readonly", "readonly");

Marcel
 
Hmm vielen Dank! Ich habe nicht gewusst, dass man die Klammern weglassen kann.
Ich habe jetzt einfach am ende des html codes ein
Code:
<script type="text/java">disableFields()</script>
eingefügt.
 
Genau das Problem hatte ich auch mal.

Es hat mich ca. 2 Tage gekostet, darauf zu kommen,
dass das Dokument komplett geladen sein muss, da-
mit man Elemente mit Javascript formatieren kann :eek:
 
Zurück
Oben Unten