Thai: problem mit getElementsByTagName

Hallo zusammen,

ich möchte gerne die Quelle des BGsounds mit Javascript ändern.
Hier die zugehörige Zeile:

document.getElementsByTagName('bgsound')[0].src = ....

wenn ich das mache, bekomme ich die Fehlermeldung "undefined" zurück,

weiß jemand warum?

Grüße und schöne Weihnachten euch allen!

  1. Hallo!
    Gibt es überhaupt ein bgsound Element?
    Wann wird diese Zeile ausgeführt? Meines wissens nach darf getElementsByTagName() so wie getElementById() erst nach dem laden bzw. bei onload() verwendet werden (funktionniert halt nur dann).

    --
    Lg,
    Snafu
    1. n'abend,

      Gibt es überhaupt ein bgsound Element?

      laut der SELF'schen HTML Elemente Liste nicht.

      weiterhin schönen abend...

      --
      #selfhtml hat ein Forum?
      sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|
  2. Hallo zusammen,

    ich möchte gerne die Quelle des BGsounds mit Javascript ändern.
    Hier die zugehörige Zeile:

    document.getElementsByTagName('bgsound')[0].src = ....

    wenn ich das mache, bekomme ich die Fehlermeldung "undefined" zurück,

    weiß jemand warum?

    Grüße und schöne Weihnachten euch allen!

    Von bgsound habe ich auch noch nix gehört. Aber wie dem auch sei... Vielleicht liegt es daran, dass du den Tag <bgsound> nur einmal verwendest? Dann müsstest du die Angabe [0] wegfallen lassen, so, wie du auch wenn du Checkbox-Zustände abfragst die Indexnummer nur angeben darfst, wenn es mehr als eine gibt.
    Gibt es nämlich nur eine, hast du MIT Index keinen Erfolg...
    Zweite Möglichkeit: Du musst ' durch " ersetzen (glaube ich nicht, aber kann ja sein)
    Oder es liegt daran, dass man einige Elemente mit bestimmten Methoden nicht erreicht. Ich glaube aber, dass das bei der Methode getElementsByTagName wohl kaum der Fall sein wird... Bei mir hatte es nur einmal bei getElementById nicht geklappt, warum auch immer...

    Für am wahrscheinlichsten halte ich die Indexnummer, die überflüssig ist.

    Hoffe, ich konnte helfen.

    Schönen Abend, Chris

    1. n'abend,

      Gibt es nämlich nur eine, hast du MIT Index keinen Erfolg...

      Bist du dir da wirklich sicher?

      Zweite Möglichkeit: Du musst ' durch " ersetzen (glaube ich nicht, aber kann ja sein)

      Meine Oma sagt im Himmel sei Jahrmarkt (glaube ich nicht, aber kann ja sein)

      Oder es liegt daran, dass man einige Elemente mit bestimmten Methoden nicht erreicht. Ich glaube aber, dass das bei der Methode getElementsByTagName wohl kaum der Fall sein wird... Bei mir hatte es nur einmal bei getElementById nicht geklappt, warum auch immer...

      Also meine Birnen vergleiche ich ja nur ungern mit Äpfeln. Vermutlich weil ich sonst nur Fruchtsalat bekomme.

      getElementsByTagName() und getElementsById() sind _völlig_ unterschiedliche Methoden. Das Erste liefert eine Liste(!) von Knoten, das Zweite liefert einen(!) Knoten.

      Für am wahrscheinlichsten halte ich die Indexnummer, die überflüssig ist.

      Für am wahrscheinlichsten halte ich, dass du dich nochmal durch die Objektreferenz quälen möchtest.

      weiterhin schönen abend...

      --
      #selfhtml hat ein Forum?
      sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|
      1. Bist du dir da wirklich sicher?

        Ja, so steht es in vielen Internet-Foren und es hat bei mir nicht funktioniert. Aber du kannst es ja gerne selber mal probieren.
        Original Fehlermeldung:
        "'document.Form.Checkbox[0].checked' ist 0 oder kein Objekt"

        Zweite Möglichkeit: Du musst ' durch " ersetzen (glaube ich nicht, aber kann ja sein)

        Meine Oma sagt im Himmel sei Jahrmarkt (glaube ich nicht, aber kann ja sein)

        Wie bist du denn drauf? Ich sage doch, dass es unwahrscheinlich ist. Aber bei JavaScript macht schließlich auch ( oder { oder [ oder < einen gewaltigen Unterschied, obwohl alles "Klammern" (runde, geschweifte und eckige Klammer, Winkelklammer) sind... Oder noch deutlicher zu Sehen bei readonly und readOnly. Es gibt noch hunderte Beispiele, wo es an wenigen Zeichen scheitert (substr[ing] usw)... Natürlich sollen beides angeblich String-Begrenzer sein, aber wer weiß schon, ob das wirklich für alle Funktionen gilt und ob alle Browser das richtig identifizieren. Der Internet-Explorer sollte ursprünglich auch eine option im select-Dropdown auf disabled schalten können, tut er aber auch nicht...

        Oder es liegt daran, dass man einige Elemente mit bestimmten Methoden nicht erreicht. Ich glaube aber, dass das bei der Methode getElementsByTagName wohl kaum der Fall sein wird... Bei mir hatte es nur einmal bei getElementById nicht geklappt, warum auch immer...

        Also meine Birnen vergleiche ich ja nur ungern mit Äpfeln. Vermutlich weil ich sonst nur Fruchtsalat bekomme.

        getElementsByTagName() und getElementsById() sind _völlig_ unterschiedliche Methoden. Das Erste liefert eine Liste(!) von Knoten, das Zweite liefert einen(!) Knoten.

        Jajaja! Von mir aus... Du hast ja Recht, aber wenn alle hier so spitzfindig wären, dann hättest du jetzt auch schon einen Packen Antworten, dass es getElementById und nicht getElementSById heißt.
        Es ging mir eigentlich _nur_ darum zu zeigen, dass nicht alle Methoden überall funktionieren, wo man meint, dass sie funktionieren müssten, von der Methode unabhängig!

        Für am wahrscheinlichsten halte ich die Indexnummer, die überflüssig ist.

        Für am wahrscheinlichsten halte ich, dass du dich nochmal durch die Objektreferenz quälen möchtest.

        Wieso sollte ich? Wonach außerdem, msng?

        weiterhin schönen abend...

        Dir auch, und Entschuldigung, dass ich versucht habe, mit meinem Wissen und meinen persönlichen Erfahrungen jemandem zu helfen.

        1. n'abend,

          Ja, so steht es in vielen Internet-Foren und es hat bei mir nicht funktioniert. Aber du kannst es ja gerne selber mal probieren.

          Dann lass die Links mal regnen.

          Original Fehlermeldung:
          "'document.Form.Checkbox[0].checked' ist 0 oder kein Objekt"

          document.Form  
          // Ausgabe: reference to undefined property document.Form
          

          Meintest du vielleicht document.forms? Das wäre aber wieder eine Liste von Formularen.

          Oder Hast du vielleicht ein Formular mit der ID »Form« und testest deinen Kram im Internet Explorer? Dieser (in seiner allseits beliebten Rolle als Einzelgänger) macht Elemente anhand ihrer ID verfügbar. Das kann recht irritierend sein, wenn man nicht weiß was da gerade genau passiert.

          Wie bist du denn drauf? Ich sage doch, dass es unwahrscheinlich ist. Aber bei JavaScript macht schließlich auch ( oder { oder [ oder < einen gewaltigen Unterschied, obwohl alles "Klammern" (runde, geschweifte und eckige Klammer, Winkelklammer) sind...

          Es gibt Sprachen, in denen ' (SingleQuote) und " (DoubleQuote) tatsächlich  unterschiedliche Bedeutungen haben. So will Java in SingleQuotes nur einfache Character (einzelne Zeichen) sehen, wohingegen DoubleQuotes einen String (Character Sequence - Zeichenkette) abgrenzen. PHP jagt DoubleQuote-Strings noch durch einen StringParser, wohingegen SingleQuote-Strings "buchstäblich" (haha, was ein Wortwitz) genommen werden. Javascript macht hier jedoch keinen (mir bekannten) Unterschied.

          () - normale runde Klammern - begrenzen in der Regel eine Argumentenliste
          {} - geschweifte Klammern - begrenzen in der Regel eine Code-Block
          [] - eckige Klammern - begrenzen in der Regel eine Liste (Array)

          Oder noch deutlicher zu Sehen bei readonly und readOnly.

          Was daran liegt, dass Attributnamen nicht case-sensitive sind.

          Es gibt noch hunderte Beispiele, wo es an wenigen Zeichen scheitert (substr[ing] usw)...

          Naja, das sind halt auch zwei verschiedene Funktionen, die dummerweise ähnlich heißen. Macht aber nichts, sie verrichten ja auch recht ähnliche Aufgaben.

          Natürlich sollen beides angeblich String-Begrenzer sein, aber wer weiß schon, ob das wirklich für alle Funktionen gilt und ob alle Browser das richtig identifizieren. Der Internet-Explorer sollte ursprünglich auch eine option im select-Dropdown auf disabled schalten können, tut er aber auch nicht...

          Der Internet Explorer macht vieles von dem nicht, was er eigentlich tun sollte. Er kompensiert das, indem er vieles macht, was er nicht machen sollte.

          Jajaja! Von mir aus... Du hast ja Recht, aber wenn alle hier so spitzfindig wären, dann hättest du jetzt auch schon einen Packen Antworten, dass es getElementById und nicht getElementSById heißt.

          Hier *sind* alle so spitzfindig - und das ist gut so™.
          Würde man die "Kleinigkeiten" nicht korrigieren, würden die Leute sie vermutlich nicht erkennen.

          Für am wahrscheinlichsten halte ich, dass du dich nochmal durch die Objektreferenz quälen möchtest.
          Wieso sollte ich? Wonach außerdem, msng?

          MSNG?

          Dir auch, und Entschuldigung, dass ich versucht habe, mit meinem Wissen und meinen persönlichen Erfahrungen jemandem zu helfen.

          Du brauchst dich nicht angegriffen fühlen, wenn dich jemand korrigiert. Würde ich mich jedes Mal verletzt fühlen, hätte ich längst von einer Brücke springen müssen. Das gehört zum Lernprozess dazu - so ist das eben.

          weiterhin schönen abend...

          --
          #selfhtml hat ein Forum?
          sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|