Jürgen: Frage zum Wiki-Artikel „alert“

problematische Seite

Ein Anfänger in Sachen Javascript der seine erste Programmzeile geschrieben hat

document.write("hello world");

hat davon gelesen das man er sich diese auch in einer "alert box" ausgeben lassen kann. Er kommt auf eure Seite und sieht folgenden Code:

var elem = document.getElementById("button");
elem.addEventListener ('click', Warnung);
  
function Warnung() {
    alert('Sie sollten doch nicht drücken!');
}

würde für ihn nicht

alert("hello world");

reichen?


Edit Rolf B: ~~~ Markierungen, Anführungszeichen um Hello World

  1. problematische Seite

    Tach!

    würde für ihn nicht alert("hello world"); reichen?

    Wenn dir das reicht, dann nimm die Beschreibung der Syntax, die steht ja auch am Anfang der Seite. Beispiele sollen jedoch die Verwendung in einem (mehr oder weniger) sinnvollem Anwendungsfall zeigen.

    dedlfix.

  2. problematische Seite

    Hallo Jürgen,

    da ist was anderes viel schlimmer. Einem Anfänger ist der Unterschied zwischen dem window-Objekt, dem Window-Objekt und dem Window-Interface nicht klar. Liest sie oder er nun zu Beginn des alert-Artikels, die Syntax sei Window.alert('nachricht'), wird er oder sie vermutlich genau das ins Script kopieren.

    VM82:1 Uncaught TypeError: Window.alert is not a function
        at <anonymous>:1:8
    

    Anfänger gucken aber nicht in die Konsole, sie stellen nur fest "passiert nix" und sind frustriert. Ein Anwender, DER in die Konsole guckt, stellt vielleicht sogar fest: Wieso denn, ein Window-Objekt gibt's doch?!

    Im späteren Beispiel wird alert dann solo benutzt, als global verfügbare Funktion, und hey, dann geht's ja auf einmal!

    Das Wiki ist voll von solchen Dingern. Bei setInterval wird einfach scope.setInterval geschrieben; was das richtige sagen soll, aber den Anfänger aus der Bahn wirft. „Wo wird denn jetzt diese Variable definiert???“

    Die Gratwanderung zwischen exakter Formulierung und Anfängerverständlichkeit fällt mir allerdings nicht leicht. Auch im MDN wird nicht zwischen Punkt als Dereferenzierungsoperator (window.alert) und Punkt als Interface-Bezug (Window.alert) getrennt, auch dort ist es knifflig. Ich tue mich aber AUCH schwer damit, Pseudo-Operatoren aus anderen Sprachen zu importieren (z.B. :: um ein "ist definiert in" auszudrücken).

    Rolf

    --
    sumpsi - posui - clusi
    1. problematische Seite

      Tach!

      da ist was anderes viel schlimmer. Gerade mal den einleitenden Beispielcode in eine Browser-Konsole kopiert und ausgeführt…

      VM82:1 Uncaught TypeError: Window.alert is not a function
          at <anonymous>:1:8
      

      Das Wiki ist voll von solchen Dingern. Die Gratwanderung zwischen exakter Formulierung und Anfängerverständlichkeit fällt mir allerdings auch nicht leicht.

      Die Methode alert() gehört zum Window-Objekt mit großem W, aber wenn man alert() aufrufen möchte, muss man entweder im globalen Scope sein und alert() nehmen oder über window mit kleinem w eine Referenz auf das Window-Objekt holen und dort das alert() aufrufen: window.alert(). Das ist leider ein technisch nicht ganz einfaches Thema.

      Die Frage ist, muss man solche Dinge auf jeder Seite erklären, die sich mit Mitgliedern von Window beschäftigen, oder muss man auch irgendwann mal voraussetzen, dass ein paar Grundlagen da sein müssen, um ein Thema zu verstehen. Diese Grundlagen wird man wohl vermutlich beim Thema Scope und bei der allgemeinen Erklärung der Built-in-Objekte ansiedeln wollen.

      dedlfix.