Starocotes: Chrome / Safari kann auf DIV nicht zugreifen

Ich habe das Problem das die neue Version des Chrome / Safari bestimmte Dinge in einer Anwendung nicht tut die alle anderen Browser tun und Chrome / Safari auch sonst getan hat.

Ich habe eine Seite die über Javascript einen Teil in einen DIV nachläd. In diesem DIV steht dann ein Button den ich auch anklicken kann worauf das onclick Ereignis ausgelöst wird.

Dieses DIV hat den namen "bud_mon", dieser Name kommt auch sonst nirgens vor.

Wenn ich aber jetzt in dieser Ereignisfunction mittels document.bud_mon.xxx auf Teile in dem DIV zugreifen will so geht das nicht. document.bud_mon ist undefiniert.
Natürlich kann ich jetzt mittels getElementId() was machen, aber mich würde interessieren WAS genau da geändert wurde, da es durchaus Teile gibt wo das mit der Notierung document.bud_mon noch funktioniert. Jemand ne Idee bevor ich meine komplette Applikation umbaue?

  1. Hallo,

    Natürlich kann ich jetzt mittels getElementId() was machen, aber mich würde interessieren WAS genau da geändert wurde, da es durchaus Teile gibt wo das mit der Notierung document.bud_mon noch funktioniert.

    Zugriff auf div-Elemente mit einer ID war in Webkit m.W. noch nie über document.dieID möglich. Zumindest hat sich da m.W. nichts in der letzten Zeit geändert.

    Was du wahrscheinlich meinst ist der Zugriff auf andere Elemente über dessen Namen oder ID. Zum Beispiel erlaubt document.dieID den Zugriff auf Formulare (form-Elemente) mit einer ID oder einem Namen (name-Attribut). Dasselbe ist bei img-Elementen möglich. Dies ist eine Kurzschreibweise zum Zugriff auf die jeweiligen DOM-Level-0-Collections:

    http://de.selfhtml.org/javascript/objekte/forms.htm
    http://de.selfhtml.org/javascript/objekte/links.htm
    http://de.selfhtml.org/javascript/objekte/images.htm
    http://de.selfhtml.org/javascript/objekte/embeds.htm

    Das sind alles sehr alte Techniken, die heute nicht mehr bzw. nicht unpräzise angewandt werden sollten. Verwende getElementById, wenn du beliebige Elemente über deren ID ansprechen willst. Die Schreibweise document.irgendeineID solltest du meiden.

    Du brauchst natürlich nicht auf Teufel komm raus sämtlichen Code umzuschreiben, der z.B. document.forms.formularID verwendet. Das wird auch weiterhin funktionieren.

    Mathias

  2. Hallo,

    Dieses DIV hat den namen "bud_mon", dieser Name kommt auch sonst nirgens vor.

    meinst du mit "Namen" tatsächlich ein name-Attribut? - Dann bist du auf dem Holzweg. Denn für div-Elemente ist das name-Attribut nicht erlaubt. Anscheinend nimmt Webkit das sehr genau.
    Internet Explorer übrigens auch. Das ist einer der wenigen Punkte, wo der IE sich strenger an den Standard hält als beispielsweise Firefox oder Opera.

    Wenn ich aber jetzt in dieser Ereignisfunction mittels document.bud_mon.xxx auf Teile in dem DIV zugreifen will so geht das nicht. document.bud_mon ist undefiniert.

    Richtig. Das würde anders aussehen, wenn du ein id-Attribut verwendet hättest.

    So long,
     Martin

    --
    F: Was ist wichtiger: Die Sonne oder der Mond?
    A: Der Mond. Denn er scheint nachts. Die Sonne dagegen scheint tagsüber, wenn es sowieso hell ist.
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. meinst du mit "Namen" tatsächlich ein name-Attribut? - Dann bist du auf dem Holzweg. Denn für div-Elemente ist das name-Attribut nicht erlaubt. Anscheinend nimmt Webkit das sehr genau.
      Internet Explorer übrigens auch. Das ist einer der wenigen Punkte, wo der IE sich strenger an den Standard hält als beispielsweise Firefox oder Opera.

      Jetzt habe ich das Chaos das ich veranstalltet habe gefunden. Ich habe zum Teil wirklich den div Namen gegeben (also name Attribut, zusätzlich zum id) und dann auch teilweise noch den selben wie ein im DIV enthaltenes Formular.

      Dann werd ich mal anpassen müssen.