Javascript Problemchen (document.getElementByID())

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von balufreak, 13.03.2007.

  1. balufreak

    balufreak Thread Starter MacUser Mitglied

    Beiträge:
    1.560
    Zustimmungen:
    28
    MacUser seit:
    12.10.2003
    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?
     
  2. balufreak

    balufreak Thread Starter MacUser Mitglied

    Beiträge:
    1.560
    Zustimmungen:
    28
    MacUser seit:
    12.10.2003
    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
     
  3. koli.bri

    koli.bri Gast

    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 -.- )
     
  4. Marzelpan

    Marzelpan MacUser Mitglied

    Beiträge:
    58
    Zustimmungen:
    0
    MacUser seit:
    31.10.2003
    Hi,
    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
     
  5. balufreak

    balufreak Thread Starter MacUser Mitglied

    Beiträge:
    1.560
    Zustimmungen:
    28
    MacUser seit:
    12.10.2003
    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.
     
  6. moses_78

    moses_78 MacUser Mitglied

    Beiträge:
    1.322
    Zustimmungen:
    22
    MacUser seit:
    08.04.2005
    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:
     
Die Seite wird geladen...

Diese Seite empfehlen