Gerrit: javascript Zugriff auf Element mit Attribut "id" ohne getElementById

Hallo,

irgendwann habe ich mal eine Site gesehen, bei der ohne getElementById auf HTML-Elemente zugegriffen wurde. BSP:

HTML: <div id="test"></div>

JavaScript: test.onclick = …

Seither verwende ich es ohne Probleme.

Nun meine Frage: sollte / darf man das eigentlich so machen? Bei meiner Internet-Recherche finde ich immer nur den "korrekten" Zugriff mit getElementById…

Beste Grüße

  1. @@Gerrit

    irgendwann habe ich mal eine Site gesehen, bei der ohne getElementById auf HTML-Elemente zugegriffen wurde. BSP:

    HTML: <div id="test"></div>

    JavaScript: test.onclick = …

    Der IE hatte vor Urzeiten Elemente mit ID als Eigenschaft des window-Objekts angelegt. War mir gar nicht bewusst, dass andere Browser das nachmachen. Vielleicht ist das sogar jetzt so spezifiziert?

    Seither verwende ich es ohne Probleme.

    Du vielleicht; andere nicht.

    Nun meine Frage: sollte / darf man das eigentlich so machen?

    Nein. Man darf nicht auf click-Events von nicht-interaktiven Elementen (wie div) lauschen (bzw. nicht-interaktiven Elemente als target bei event delegation verwenden), wenn die Anwendung allgemein bedienbar sein soll.

    Nicht-interaktive Elemente sind nicht in der Tab-Reihenfolge und prinzipiell nicht anclickbar. Sie mögen für einen Teil der Nutzer bedienbar sein, für einen anderen Teil aber unbedienbar. Verwende Buttons!

    LLAP 🖖

    --
    “When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory
    1. Hi LLAP,

      vielen Dank für den Hinweis auf den Button!

      Ich meinte aber in meinem Beispiel eher nur den JavaScript-Teil, also korrigiertes BSP:

      HTML: <button id="test"></button>

      JavaScript: test.onclick = …

      Was hälst Du davon: http://2ality.com/2012/08/ids-are-global.html

      Gerrit

      1. Hi there,

        vielen Dank für den Hinweis auf den Button!

        Ich meinte aber in meinem Beispiel eher nur den JavaScript-Teil, also korrigiertes BSP:

        das hat er eh verstanden, aber er muß prinzipiell auf Fragen antworten, die gar nicht gestellt wurden, das geht bei ihm nicht anders…

        1. @@Klawischnigg

          aber er muß prinzipiell auf Fragen antworten, die gar nicht gestellt wurden, das geht bei ihm nicht anders…

          Das gehört bei guten™ Antworten ja einfach mit dazu.

          LLAP 🖖

          --
          “When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory
      2. @@Gerrit

        Hi LLAP,

        ??

        korrigiertes BSP:

        HTML: <button id="test"></button>

        Mit etwas Text sollte der Button aber schon beschriftet sein.

        Was hälst Du davon: http://2ality.com/2012/08/ids-are-global.html

        Von nicht verlinkten URLs, die man aufrufen soll, halte ich gar nichts. Ich hab das mal korrigiert.

        Dort halte ich viel von Rodneys Kommentar: “concluded this JS behavior being the same kind of ‘making things easy’ bullshit that ultimately can lead to only one thing: bad code.”

        LLAP 🖖

        --
        “When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory
        1. Hallo,

          Was hälst Du davon: http://2ality.com/2012/08/ids-are-global.html

          Dort halte ich viel von Rodneys Kommentar: “concluded this JS behavior being the same kind of ‘making things easy’ bullshit that ultimately can lead to only one thing: bad code.”

          und Axels Antwort: “I agree, more a bug than a feature.”

          Jürgen

          1. Danke für die Hinweise, Korrekturen und Meinungen, lieber Gunnar! Nun schaut mein Kopf wieder in die richtige Richtung… Gruß, Gerrit