Eva: getElementById() Fehlermeldung: ist Null oder kein Objekt

Hallo!

Mit getElementById("1").value möchte ich den Wert eines input Feldes befüllen.

Habe das erfolgreich in einer HTML Seite bekommen. Nun muß ich meine HTML Seite mitsamt JavaScript in ein Portal einhängen. Der Portalrahmen wird von einer JSP Seite gebildet, die meine HTML Seite per inlcude einbaut.

Es funktionieren einige JavaScript Funktionen (hab alerts eingehängt um zu testen, ob überhaupt was in Richtung JavaScript geht), nur die getElementById("1").value gibt mir die Fehlermeldung "getElementById("..") ist Null oder kein Objekt".

D.h. das Script kann nicht auf das Objekt zugreifen.

Bin verwirrt, weil das Ganze ja eigentlich funktioniert, nur eben nicht sobald ich es in das Portal einhänge.

Die ganze seite mit Potalcode außen rum sieht von der Struktur her so aus:

<html>

<head>
 <script src=".." />
</head>

<body>

<script language="JavaScript">
...
</script>

<table>
..

<!-- zwischendrin kommen ein paar Scripte -->
<!-- und wahnsinnig viel Code -->
<!-- und in einem td kommt dann meine eingebundene Seite: -->

<html>
<head>
<title>...</title>
<script language="javascript" scr="..."></script>
</head>
<body>

<form ...>
...

<!-- auf dieses Element möchte ich zugreifen -->
<input type="text" name="JAHR" id="1" size="4" maxlength="4">

...
</form>

</body>
</html>

<!-- Ende meine eingebundene Seite -->
<!-- noch mehr Code vom Portal -->
..
</table>

</body>
</html>

Mein JavaScript wird eingebunden. Der alert, den ich an den Anfang meiner Funktion gestellt habe, wird angezeigt.

Die diversen JavaScript Funktionen überschneiden sich nicht. Es gibt im ganzen Dokument auch nur ein einziges HTML Element, das name="JAHR" und id="1" hat.

Dachte eventuell, daß zwei geschachtelte HTML Seiten das Problem sind und hab das ohne das Portal Geraffel in einem einfachen Beispiel getestet - und es tat.

Hier mein JavaScript:

alert("Hallo bin da.");
fillJahr();

function fillJahr()
{
alert("fillJahr");
  var Datum = new Date();
  var aktuellesJahr = Datum.getFullYear();
alert("aktuelles Jahr: " + aktuellesJahr);
  document.getElementsByName('JAHR')[0].value = aktuellesJahr;
}

Alle alerts werden angezeigt.

Zweck der Funktion fillJahr():
Soll das input feld mit dem aktuellen Jahr vorbefüllen.

Mein Browser ist der IE5.

Danke für jede Hilfe!
Eva

  1. Hier mein JavaScript:

    alert("Hallo bin da.");
    fillJahr();

    function fillJahr()
    {
    alert("fillJahr");
      var Datum = new Date();
      var aktuellesJahr = Datum.getFullYear();
    alert("aktuelles Jahr: " + aktuellesJahr);
      document.getElementsByName('JAHR')[0].value = aktuellesJahr;
    }

    habe statt der vorletzten Zeile auch folgende Varianten probiert, aber keine ging:

    document.getElementsByName("JAHR")[0].value = aktuellesJahr;
    document.getElementById('1').value = aktuellesJahr;
    document.getElementById("1").value = aktuellesJahr;
    document.getElementById("JAHR").value = aktuellesJahr;
    document.getElementById('JAHR').value = aktuellesJahr;

    Eva

  2. <form ...>
    <!-- auf dieses Element möchte ich zugreifen -->
    <input type="text" name="JAHR" id="1" size="4" maxlength="4">

    Hallo Eva,

    wie wäre es mit diesem Ansatz: ordne dem form-Element eine id zu (z.B. 'frmBlah'), und greife dann über diese id zu:

    document.getElementById('frmBlah').JAHR.value = blah;

    HTH Robert

    1. wie wäre es mit diesem Ansatz: ordne dem form-Element eine id zu (z.B. 'frmBlah'), und greife dann über diese id zu:

      document.getElementById('frmBlah').JAHR.value = blah;

      Hallo Robert,

      hab ich gemacht:

      <form id="CS17">
      <input type="text" name="JAHR" id="CSJ" size="4" maxlength="4">
      </form>

      Mit dem JavaScript habe ich folgende Zugriffe ausprobiert:
      document.getElementById("CS17").JAHR.value
      document.getElementById('CS17').JAHR.value

      keiner hat funktioniert. Es kam beidesmal die Fehlermeldung
      "Objekt erforderlich". Ich schätze, der findet nicht mal das <form> Tag.

      Hast Du noch einen Tip?

      1. Hallo Eva,

        der Hinweis von MudGuard auf die Struktur Deines Dokumentes ist wohl der entscheidende. Versuch erst einmal, die Grundstruktur korrekt zu gestalten; vielleicht, indem Du ein neues sauberes Dokument mit Formularelement aufbaust und Dir dort über die richtige Weise des JavaScript-Zugriffs auf die Elemente der Seite klar wirst. Wenn das ordentlich funktioniert, kannst Du das mit Deiner vorhandenen Seite abgleichen und was draus lernen - oder die neue entsprechend ausgestalten.

        HTH Robert

  3. Hallo!

    Mit getElementById("1").value möchte ich den Wert eines input Feldes befüllen.
    <!-- auf dieses Element möchte ich zugreifen -->
    <input type="text" name="JAHR" id="1" size="4" maxlength="4">

    IDs dürfen nicht mit einer Zahl anfangen sondern müssen zumindest mit einem Buchstaben beginnen, bevor dann Unterstriche oder Zahlen folgen...
    Dies zu ändern sollte dein Problem eigentlich lösen...

    MfG
    Rouven

    --

    -------------------
    ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
    1. IDs dürfen nicht mit einer Zahl anfangen sondern müssen zumindest mit einem Buchstaben beginnen, bevor dann Unterstriche oder Zahlen folgen...
      Dies zu ändern sollte dein Problem eigentlich lösen...

      Leider löst es das Problem nicht. Habe die id wie folgt geändert:

      <input type="text" name="JAHR" id="CSJ" size="4" maxlength="4">

      Und habe folgende Aufrufe im JavaScript probiert:

      document.getElementById("CSJ").value
      document.getElementById('CSJ').value

      Beidesmal kommt wieder die Fehlermeldung "ist Null oder kein Objekt"

      Hast Du noch einen Tip?

  4. Hi,

    Mit getElementById("1").value möchte ich den Wert eines input Feldes befüllen.

    1 ist keine gültige Id.
    Ids müssen mit einem Buchstaben beginnen (a-z, KEINE Umlaute oder sowas)

    <table>
    <!-- und in einem td kommt dann meine eingebundene Seite: -->
    <html>

    Daß das kein gültiges HTML sein kann, ist Dir klar?

    Das html-Element ist ausschließlich als root-Element in HTML-Dokumenten zulässig, aber nicht innerhalb einer td.

    <!-- auf dieses Element möchte ich zugreifen -->
    <input type="text" name="JAHR" id="1" size="4" maxlength="4">

    Die Id ist immer noch nicht korrekt.

    Und ob mit dieser ungültigen Konstruktion (html-Element in td) überhaupt ein Zugriff möglich ist, ist fraglich.

    cu,
    Andreas

    --
    Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
    http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/
    1. 1 ist keine gültige Id.
      Ids müssen mit einem Buchstaben beginnen (a-z, KEINE Umlaute oder sowas)

      Habe die id nun in id="CSJ" umgeändert

      <table>
      <!-- und in einem td kommt dann meine eingebundene Seite: -->
      <html>

      Daß das kein gültiges HTML sein kann, ist Dir klar?

      Hab's rausgenommen.

      Trotz dieser Korrekturen geht es leider immer noch nicht.

      Hast Du noch einen Tip?

  5. Hallo!

    Mit getElementById("1").value möchte ich den Wert eines input Feldes befüllen.

    Warum?
    du kannst doch direkt auf ein  Formular zugreifen.

    Es funktionieren einige JavaScript Funktionen (hab alerts eingehängt um zu testen, ob überhaupt was in Richtung JavaScript geht), nur die getElementById("1").value gibt mir die Fehlermeldung "getElementById("..") ist Null oder kein Objekt".

    D.h. das Script kann nicht auf das Objekt zugreifen.

    Ist die Seite schon fertig geladen, d.h. ist das Formular überhaupt da?

    <html>

    <head>
     <script src=".." />
    </head>

    <body>

    <script language="JavaScript">

    Es muss heißen:
    <script type="text/JavaScript">

    »

    <html>
    <head>
    <title>...</title>

    und das hast du auch entfernt?
    Das ist innerhalb vom body ziemlicher Müll.

    <script language="javascript" scr="..."></script>
    </head>
    <body>

    und noch ein Body?

    Du kriegst hier natürlich schwierigkeiten mit deiner Funktion document.get... auf was bezieht dsich das document?

    <form ...>
    ...

    <!-- auf dieses Element möchte ich zugreifen -->
    <input type="text" name="JAHR" id="1" size="4" maxlength="4">

    document.forms[0].elements['JAHR'].value = ......

    Dachte eventuell, daß zwei geschachtelte HTML Seiten das Problem sind und hab das ohne das Portal Geraffel in einem einfachen Beispiel getestet - und es tat.

    Es gibt keine geschachtelten HTML Seiten, insofern ist es völlig unvorhersehbar, was der Browser daraus macht.

    function fillJahr()
    {
    alert("fillJahr");
      var Datum = new Date();
      var aktuellesJahr = Datum.getFullYear();
    alert("aktuelles Jahr: " + aktuellesJahr);
      document.getElementsByName('JAHR')[0].value = aktuellesJahr;
    }

    Das kann natürlich erst nachdem das Formular da ist funktioneren.

    Also in etwa so:

    <html>
    <head>
    .....
    </head>

    <body>

    <form ....>

    <input type="text" name="JAHR">

    </form>

    <script type="text/javascript">
    var aktuellesJahr = (new Date()).getFullYear();
    document.forms[0].elements['JAHR'].value = aktuellesJahr;
    </script>

    </body>
    </html>