Sarah: Weihnachtsbaum mit Kugeln (Schleifen)

Hallo,

zunächst bestand die Aufgabe darin einen Weihnachtsbaum wie folgt zu erstellen:

<html>
<head>
<title></title>
</head>
  <body>
    <font face="Courier New">
          <script language="JavaScript">
          <!--
          var leer=7, anzplus=1;
          for (i=0;i<8;i++){
            for (j=0;j<leer;j++){
              document.write("&nbsp;");
            }
            for (j=0;j<anzplus;j++){
              document.write("+");
            }
            for (j=0;j<leer;j++){
              document.write("&nbsp;");
            }
            document.write("<br>");
            leer = (leer-1);
            anzplus = anzplus+2;
          }
          //-->
          </script>
    </font>
  </body>
</html>

Nun soll jedes zweite + durch eine Kugel, also ein O ersetzt werden. Habt ihr eine Idee wie ich das mache?
Danke schonmal

  1. Grüße,

    for (j=0;j<anzplus;j++){

    if(!(j%2)){

    document.write("+");

    }else{
                     document.write "kugel^^"
                      }

    }

    kA ob das auch mit JS stimmt, kenne nur PHP - aber das prinzip lautet

    ist rest vom j/2 = 0 so ist es 2e stelle ->schreib ne kugel^^

    MFG
    bleicher

    --
    __________________________-
    Menschen an sich , sind nicht schlecht - es sind nur ihre Taten (c).
    Lieber bereuen gesündigt zu haben, als nicht sündigen und es später trotzdem bereuen.
    Boccaccio
  2. Hi!
    Was du suchst nennt man Modulo-Division. Wird fuer gewoehnlich mit einem % dargestellt und ist auf SLEFHTML zu finden.

    http://de.selfhtml.org/navigation/suche/index.htm?Suchanfrage=modulo

    1. Mist. Hier sollteste direkt fuendig werden.
      http://de.selfhtml.org/javascript/sprache/operatoren.htm#berechnung

      sorry for that...

  3. Hi,

    Nun soll jedes zweite + durch eine Kugel, also ein O ersetzt werden. Habt ihr eine Idee wie ich das mache?

    Mit dem Modulo-Operator kannst du überprüfen, ob eine Zahl gerade oder ungerade ist.
    Beispiel:
    if(j%2)
    {
        // j ist ungerade
    }
    else
    {
        // j ist gerade
    }

    Das ist die einfachste Möglichkeit die mir dazu einfällt.

    mfG,
    steckl

  4. Hello out there!

    <font face="Courier New">

    Sämtliche Darstellungsangaben sollten mit CSS ('font') gemacht werden; nicht mit missbilligten HTML-Attributen.

    Hier bietet sich auch das für präformatierten Text vorgesehene HTML-Element 'pre' an, dessen Inhalt browser auch ohne zusätzliches CSS in dicktengleicher Schrift anzeigen.

    <script language="JavaScript">

    So nicht; sondern mit 'type'-Attribut.

    <!--

    HTML-Auskommentierung von JavaScript-Code ist bestenfalls vollkommen überflüssig, andernfalls falsch. Weg damit!

    var leer=7, anzplus=1;
              for (i=0;i<8;i++){

    Globale Variablen sind böse[tm]. Also das Schlüsselwort 'var' vors i!

    for (j=0;j<leer;j++){

    Globale Varia... ach, das sagte ich ja schon,

    document.write("&nbsp;");
                }
                for (j=0;j<anzplus;j++){
                  document.write("+");
                }
                for (j=0;j<leer;j++){
                  document.write("&nbsp;");
                }
                document.write("<br>");
                leer = (leer-1);
                anzplus = anzplus+2;
              }

    Die Varible leer ist überflüssig: leer wird in der äußeren Schleife runtergezählt, i wird hochgezählt, es gilt stets leer == 7 - i.

    Die Varible anzplus ist auch überflüssig: sie wird auch hochgezählt (um 2, also doppelt so schnell wie i), es gilt stets anzplus == 2 * i + 1.

    Folgendes tut's also genauso:

    for (var i = 0; i < 8; i++)  
    {  
      for (var j = 0; j < 7 - i; j++)  
      {  
        document.write("&nbsp;");  
      }  
      for (var j = 0; j < 2 * i + 1; j++)  
      {  
        document.write("+");  
      }  
      for (var j = 0; j < 7 - i; j++)  
      {  
        document.write("&nbsp;"); // wozu eigentlich die Leerzeichen am Ende?  
      }  
      document.write("<br>");  
    }
    

    Nun soll jedes zweite + durch eine Kugel, also ein O ersetzt werden. Habt ihr eine Idee wie ich das mache?

    Damit du nicht - wie andere im Thread schon vorschlugen - dividieren musst (was teuer ist!), speicherst du dir in einer boolschen Variablen, ob du eine Glaskugel an den Weihnachtsbaum hängst oder nicht. Bei jedem Schreiben fragst du sie ab und negierst dann ihren Wert:

    for (var i = 0, istGlaskugel = false; i < 8; i++)  
    {  
      for (var j = 0; j < 7 - i; j++)  
      {  
        document.write("&nbsp;");  
      }  
      for (var j = 0; j < 2 * i + 1; j++)  
      {  
        if (istGlaskugel)  
          document.write("O");  
        else  
          document.write("+");  
        istGlaskugel = !istGlaskugel;  
      }  
      for (var j = 0; j < 7 - i; j++)  
      {  
        document.write("&nbsp;"); // wozu eigentlich die Leerzeichen am Ende?  
      }  
      document.write("<br>");  
    }
    

    Das nur zur Veranschuung; üblicherweise würde man die Abfrage anders schreiben:

    for (var i = 0, istGlaskugel = false; i < 8; i++)  
    {  
      for (var j = 0; j < 7 - i; j++)  
      {  
        document.write("&nbsp;");  
      }  
      for (var j = 0; j < 2 * i + 1; j++)  
      {  
        document.write(istGlaskugel ? "O" : "+");  
        istGlaskugel = !istGlaskugel;  
      }  
      for (var j = 0; j < 7 - i; j++)  
      {  
        document.write("&nbsp;"); // wozu eigentlich die Leerzeichen am Ende?  
      }  
      document.write("<br>");  
    }
    

    See ya up the road,
    Gunnar

    --
    „Und [dieses Forum] soll […] auch ein Fachforum bleiben und kein Psychologieforum werden.“ (Kirsten Evers)
    1. Hi,

      Damit du nicht - wie andere im Thread schon vorschlugen - dividieren musst (was teuer ist!), speicherst du dir in einer boolschen Variablen, ob du eine Glaskugel an den Weihnachtsbaum hängst oder nicht. Bei jedem Schreiben fragst du sie ab und negierst dann ihren Wert:

      Was auch noch möglich wäre ist eine bitweise UND-Verknüpfung:

      if(j&1)
      {
          // ungerade
      }
      else
      {
          // gerade
      }

      Jedoch weiß ich nicht wie "teuer" das im Vergleich zu der boolschen Variable ist. Und außerdem ist diese Variante wohl für Anfänger etwas kompliziert.

      mfG,
      steckl

      1. Hi,

        Was mich interessieren wuerde: Das Gesicht des Lehrers, wenn er solche Loesungen sieht... Denn so hab ich es aufgefasst: Als Schulaufgabe. Also Fuer meine Lehrer war modulo schon ein Mysterium. Einer meinte wirklich x%5 waeren 5% Prozent von x....

        Das Negieren von Boolschen Werten oder lustige logische Verknuepfungen sind da noch viel interessanter! :)

      2. Hallo,

        Was auch noch möglich wäre ist eine bitweise UND-Verknüpfung:

        if(j&1)
        {
            // ungerade
        }
        else
        {
            // gerade
        }

        Jedoch weiß ich nicht wie "teuer" das im Vergleich zu der boolschen Variable ist. Und außerdem ist diese Variante wohl für Anfänger etwas kompliziert.

        Das ist ziemlich teuer, denn für dir bitweise Verknüpfung wird die Floatingpoint-Variable j zuerst in Integer umgewandelt, dann verknüpft, und dann wieder ins Floatingpoint-Format zurückgewandelt. Bitweise Verknüpfungen sollte man deshalb nur durchführen, wenn  man es wirklich will bzw. muss.

        Gruß, Don P

        1. Hi,

          Das ist ziemlich teuer, denn für dir bitweise Verknüpfung wird die Floatingpoint-Variable j zuerst in Integer umgewandelt, dann verknüpft, und dann wieder ins Floatingpoint-Format zurückgewandelt.

          Handelt JS die Laufvariable einer Schleife als Fließkommazahl und nicht als Ganzzahl?

          mfG,
          steckl

          1. Hallo,

            Handelt JS die Laufvariable einer Schleife als Fließkommazahl und nicht als Ganzzahl?

            Ja. JavaScript kennt grundsätzlich keine Ganzzahlen, nur Fließkomma. Bei den bitweisen Operatoren werden deshalb intern Umwandlungen nötig, was relativ viel Rechenzeit kostet.
            In anderen Programmiersprachen ist man oft mit shift oder bitweisem Oder usw. schneller am Ziel. Nicht so in Javascript.

            Gruß, Don P

            1. Hi,

              Handelt JS die Laufvariable einer Schleife als Fließkommazahl und nicht als Ganzzahl?

              Ja. JavaScript kennt grundsätzlich keine Ganzzahlen, nur Fließkomma. Bei den bitweisen Operatoren werden deshalb intern Umwandlungen nötig, was relativ viel Rechenzeit kostet.

              Wieder was dazugelernt. Danke für die Erklärung.

              mfG,
              steckl

            2. Grütze .. äh ... Grüße!

              Ja. JavaScript kennt grundsätzlich keine Ganzzahlen, nur Fließkomma. Bei den bitweisen Operatoren werden deshalb intern Umwandlungen nötig, was relativ viel Rechenzeit kostet.
              In anderen Programmiersprachen ist man oft mit shift oder bitweisem Oder usw. schneller am Ziel. Nicht so in Javascript.

              Ah ja. Das erklärt dann auch meine Meßergebnisse beim Werte-Tausch zweier Variablen per XOR-Methode gegenüber der Verwendung einer dritten Variable.


              Kai

              --
              What is the difference between Scientology and Microsoft? One is an
              evil cult bent on world domination and the other was begun by L. Ron
              Hubbard.
              ie:{ fl:( br:< va:) ls:? fo:| rl:? n4:° ss:{ de:] js:| ch:? mo:| zu:|
        2. Abend.

          Und wo wir gerade beim Laufzeitverhalten von JavaScript sind:

          Gunnar hat ja die ganzen schönen 'unnützen' Variablen entsorgt - aus Performance-Gründen kann es aber durchaus angebracht sein, Zwischenergebnisse in solchen zu hinterlegen.

          Für größere Bäume arbeitet z.B. folgende Variante schneller:

            
          function maleBaum(hoehe)  
          {  
           for(var istKugel = false, i = 1; hoehe; i += 2, --hoehe)  
           {  
            for(var j = 1; j < hoehe; ++j)  
             document.write(' ');  
            
            for(var j = 0; j < i; ++j)  
            {  
             document.write(istKugel ? 'O' : '+');  
             istKugel = !istKugel;  
            }  
            
            document.write('<br>');  
           }  
          }  
          
          

          Hat jemand noch weitere Verbesserungsvorschläge auf dem Weg zum perfekten Weihnachtsbaumgenerator?

          Christoph

          1. Hat ja niemand angebissen, also antworte ich mir selbst ;)

            Eine *wesentlich* schnellere Version ist z.B.

              
             function(hoehe)  
             {  
              var zeile = '';  
              for(var i = hoehe; --i;)  
               zeile += ' ';  
              
              for(zeile += '+'; hoehe--; zeile = (zeile + 'O+').substring(1))  
               document.write(zeile + '<br>');  
             }  
            
            

            Christoph

    2. Hi,

      <!--

      HTML-Auskommentierung von JavaScript-Code ist bestenfalls vollkommen überflüssig, andernfalls falsch. Weg damit!

      Unfug!

      Gruß, Cybaer

      --
      Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
      1. Hello out there!

        HTML-Auskommentierung von JavaScript-Code ist bestenfalls vollkommen überflüssig, andernfalls falsch. Weg damit!

        Unfug!

        Sag ich doch, dass HTML-Kommentare in JavaScript Unfug ist.

        See ya up the road,
        Gunnar

        --
        „Und [dieses Forum] soll […] auch ein Fachforum bleiben und kein Psychologieforum werden.“ (Kirsten Evers)
        1. Hi,

          Unfug!
          Sag ich doch, dass HTML-Kommentare in JavaScript Unfug ist.

          Das zu behaupten ist der Unfug.

          Gruß, Cybaer

          --
          Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
          1. Hallo,

            Sag ich doch, dass HTML-Kommentare in JavaScript Unfug ist.

            Das zu behaupten ist der Unfug.

            Das zu bestreiten ist Unfug. Es sei denn, man würde es begründen, was du hier aber nicht machst. Die einzige Begründung für diese HTML-Kommentare wäre, dass man mit uralten Browsern oder sonstigen Geräten arbeitet, die  <script> nicht verstehen. Solche gibt es aber seit langem nicht mehr, es sei denn, man hat sie über Jahrzehnte gesammelt und benutzt sie aus irgend einem Grund noch immer.

            Gruß, Don P

            1. Hi,

              dass man mit uralten Browsern oder sonstigen Geräten arbeitet, die  <script> nicht verstehen. Solche gibt es aber seit langem nicht mehr,

              Script ist kein Content. Also kommentiert man ihn aus.

              Wenn man z.B. später mal mit PHP anfängt, dann ist einem als Anfänger vielleicht ganz lieb, wenn man mit einfachem Befehl den Content vom HTML-Code loslösen kann.

              Arbeite rücksichtsvoll und abwärtskompatibel, und gut ist ...

              ... schaden tut's schon nicht. %-)

              Gruß, Cybaer

              --
              Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
              1. Hello out there!

                Script ist kein Content. Also kommentiert man ihn aus.

                Nein, man lagert es aus - in eine separate JavaScript-Ressource.

                ... schaden tut's schon nicht. %-)

                Eventuell doch: [</archiv/2007/1/t143488/#m931693> ff.]

                See ya up the road,
                Gunnar

                --
                „Und [dieses Forum] soll […] auch ein Fachforum bleiben und kein Psychologieforum werden.“ (Kirsten Evers)
                1. Hi,

                  Eventuell doch: [</archiv/2007/1/t143488/#m931693> ff.]

                  Blödsinn! Niemand wird gehindert, statt i-- lieber i=i-1 oder i-=1 zu schreiben. Da ich JS prinzipiell auskommentiere, wirst Du in meinen nicht-ausgelagerten Scripts z.B. nur ein i-=1 finden. Was soll das denn überhaupt für eine "Argumentation" sein? =:-o

                  Gruß, Cybaer

                  --
                  Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
                  1. Hello out there!

                    Blödsinn! Niemand wird gehindert, statt i-- lieber i=i-1 oder i-=1 zu schreiben.

                    Äh, wie jetzt? Du schreibst JavaScript-Code mit Hinblick auf die Einbettung in HTML und verzichtest auf Dinge, die diese Sprache bietet, anstatt die Einbettung in HTML mit Hinblick auf den geschriebenen JavaScript-Code vorzunehmen?

                    Ist das wirklich dein Ernst?

                    Da ich JS prinzipiell auskommentiere,

                    Niemand wird gezwungen, JS auszukommentieren. Und niemanden stört es, wenn JS nicht auskommentiert ist.

                    Was soll das denn überhaupt für eine "Argumentation" sein? =:-o

                    Das frag ich mich auch.

                    See ya up the road,
                    Gunnar

                    --
                    „Und [dieses Forum] soll […] auch ein Fachforum bleiben und kein Psychologieforum werden.“ (Kirsten Evers)
                    1. Hi,

                      Äh, wie jetzt? Du schreibst JavaScript-Code mit Hinblick auf die Einbettung in HTML und verzichtest auf Dinge, die diese Sprache bietet, anstatt die Einbettung in HTML mit Hinblick auf den geschriebenen JavaScript-Code vorzunehmen?

                      Ist das wirklich dein Ernst?

                      Ist das wirklich dein Ernst, was anderes zu vertreten?

                      Wenn man JS oder CSS in HTML einbettet, dann hat man die Regeln von HTML zu befolgen (egal ob man blankes JS reinschreibt, oder ob man auskommentiert, oder ob man, im Falle von XHTML, den Bereich als CDATA kennzeichnet). Punkt.

                      Und normalerweise lernt man erst HTML und später vielleicht mal CSS oder JS.

                      Und es gehört zum Grundwissen von HTML, daß -- einen Kommentar beendet.

                      Wenn ich also JS (sinnvollerweise auskommentiert - inhaltliche wie technische Gründe hatte ich genannt) in HTML einbette, dann sollte ich bereits wissen, daß ich statt i-- halt i-=1 schreiben muß (wo wird da auf irgendwas verzichtet, wenn man nur die Syntax so wählt, daß sie halt normgerecht ist?). Das war in JS schon immer so, und es ist wohl keine Alternative, auf HTML-Kommentare zu verzichten, nur weil der Autor HTML möglicherweise nicht gut genug kennt. Vielmehr ist es zielführend, ihn ggf. auf einen Fehler hinzuweisen, der ihm sowohl im auskommentieren JS, als auch in auskommentiertem CSS, als auch in purem HTML unterlaufen kann, oder? =:-o

                      Und niemanden stört es, wenn JS nicht auskommentiert ist.

                      ? Du weißt doch *überhaupt nichts* von den Postern und seinen Problemen, Zielsetzungen, Voraussetzungen, etc.!

                      Du bist halt der Meinung: Deine Meinung ist die richtige. Punkt. "Gunnar allmighty"? ;-> Diese (zum Glück nach der Pause nicht mehr so oft hier postulierte Attitüde) mag mitunter schon nervig genug sein, aber wenn man sie auch dann zum Postingmotto macht, wo es nicht angebracht ist, dann wird es schier unerträglich. An deinem HTML-Wesen hat die Welt wohl kaum zu genesen, oder?

                      Was soll das denn überhaupt für eine "Argumentation" sein? =:-o
                      Das frag ich mich auch.

                      Also nochmal: Auskommentierung verhindert, daß Scripte oder Styles als Content gelten. Das ist die semantische Begründung. Du hast keinen blassen Schimmer, welche Clients auf einen HTML-Code losgelassen werden. Das könne alte HTML-Clients sein, das können eigene oder fremde Bots sein, die damit besser klarkommen (s. z.B. PHP), daß kann irgendwas sein, was Du dir in deiner Welt gar nicht vorzustellen vermagst. Das ist die technische Begründung.

                      Schaden kann die Auskommentierung nach wie vor nicht, sie kann aber absolut (und auch heutzutage noch) von Nutzen sein. Von mir aus kannst *Du* bei dir die Aukommentierung weglassen, wie Du fröhlich bist. Aber das quasi als *Muß* hinzustellen, finde ich echt ...

                      ... und wird halt ggf. auch hier im Forum "auskommentiert" werden :-) - halt zukünftig mit Verweis auf diesen Thread. Kann sich dann ja jeder selbst eine Meinung bilden (und man beachte: "selbst eine Meinung bilden" != "un- oder IMHO falsch begründete Meinung vorgesetzt bekommen").

                      Gruß, Cybaer

                      --
                      Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
                      1. Hello out there!

                        Äh, wie jetzt? Du schreibst JavaScript-Code mit Hinblick auf die Einbettung in HTML und verzichtest auf Dinge, die diese Sprache bietet, anstatt die Einbettung in HTML mit Hinblick auf den geschriebenen JavaScript-Code vorzunehmen?

                        Ist das wirklich dein Ernst?

                        Ist das wirklich dein Ernst, was anderes zu vertreten?

                        Ja, natürlich. Wenn ich JavaScript schreibe, dann schreibe ich JavaScript. Und das nach den Regeln irgendeiner anderen Sprache, insbesondere nicht nach den Regeln von HTML.

                        Das fertige Script beim Einbinden in HTML nochmal umzuschreiben wäre doch reichlich blöd. (Womit nicht kontextspezifische Codierung gemeint ist, wenn ein JavaScript-Bereich in XHTML als 'application/xhtml+xml' PCDATA ist.)

                        Und normalerweise lernt man erst HTML und später vielleicht mal CSS oder JS.

                        Was die Reihenfolge des Lernens damit zu tun hat, erschließt sich mir nicht.

                        Und es gehört zum Grundwissen von HTML, daß -- einen Kommentar beendet.

                        Wohl kaum. So viel SGML-Kenntnisse traue ich nur einem Bruchteil der Webautoren zu; der überwiegende Teil wird denken, '-->' beendet einen Kommentar.

                        und es ist wohl keine Alternative, auf HTML-Kommentare zu verzichten, nur weil der Autor HTML möglicherweise nicht gut genug kennt.

                        Nö, mangelnde Kenntnisse sind kein Grund. Es gibt andere Gründe gegen die Auskommentierung, aber kaum welche dafür.

                        Du bist halt der Meinung: Deine Meinung ist die richtige. Punkt. "Gunnar allmighty"? ;-> [bla bla]

                        Gehen dir die Argumente aus, dass du auf blanke Polemik zurückgreifst?

                        Also nochmal: Auskommentierung verhindert, daß Scripte oder Styles als Content gelten. Das ist die semantische Begründung.

                        Schon die Semantik des 'script'- bzw. 'style'-Elements besagt, dass deren Elementinhalt kein „Content“ ist.

                        Du hast keinen blassen Schimmer, welche Clients auf einen HTML-Code losgelassen werden.

                        Brauch ich auch nicht; ein Client, der 'script' bzw. 'style' nicht entsprechend interpretiert, ist kaputt[tm].

                        See ya up the road,
                        Gunnar

                        --
                        „Und [dieses Forum] soll […] auch ein Fachforum bleiben und kein Psychologieforum werden.“ (Kirsten Evers)
                        1. Hi,

                          Ja, natürlich. Wenn ich JavaScript schreibe, dann schreibe ich JavaScript. Und das nach den Regeln irgendeiner anderen Sprache, insbesondere nicht nach den Regeln von HTML.

                          Dann trenne *Du* halt JS und HTML. Ist ja seit JS 1.1 möglich und ja auch sinnvoll. Und halte dich dann zukünftig einfach mit Kommentaren zurück, an Autoren, die, aus welchen Gründen auch immer, den/einen bestimmten JS-Code in HTML einbetten. Also wenn das kein faires Angebot zum Kompromiß ist, dann weiß ich auch nicht! %-)

                          Das fertige Script beim Einbinden in HTML nochmal umzuschreiben wäre doch reichlich blöd.

                          Klingt für mich nicht blöder, als die "--" kurz zu Ersetzen, sondern auf die Auskommentierung nur deswegen zu verzichten, weil man Nullchecker ist. =:-)

                          Und normalerweise lernt man erst HTML und später vielleicht mal CSS oder JS.
                          Was die Reihenfolge des Lernens damit zu tun hat, erschließt sich mir nicht.

                          Wenn Du HTML gelernt hast (was naturgemäß vor JS geschieht), dann weißt Du bereits vor dem Start mit JS, daß "--" einen Kommentar beendet. Spätestens wenn ich im eingebetteten Script dann i-- schreiben will, sollte bei einem geistig tätigen Menschen die Erinnerung anspringen: Da war doch was?! =:-o

                          Die Frage, ob Autoren mit mangelhaften HTML-Kenntnissen überhaupt schon JS anfangen sollten, ist IMHO eher philosophisch-theoretischer Natur ...

                          Und es gehört zum Grundwissen von HTML, daß -- einen Kommentar beendet.
                          Wohl kaum. So viel SGML-Kenntnisse traue ich nur einem Bruchteil der Webautoren zu; der überwiegende Teil wird denken, '-->' beendet einen Kommentar.

                          Dann ist das mangelnde Wissen verbesserungswürdig (und es wurde ja auch hier im Forum schon der eine oder die andere darauf hingewiesen, daß sich das Phänomen, welches sie sich nicht erklären konnten, dem Umstand geschuldet ist, daß "--" einen HTML-Kommentar beendet). Und die "--"-"Problematik" bezieht sich ja eben nicht nur auf auskommentiertes JS (zumal die meisten JS-Schleifen ja ohnehin eher von 0 nach ?.length gehen, und deswegen nicht de- sondern inkrementiert werden - also "i++"), sondern halt im wesentlichen auf HTML-Kommentare selbst.

                          Es gibt IMHO auh keinen Grund, sein Wissen um HTML-Kommentare dem Noch-nicht-Wissenden vorzuenthalten. =:-o

                          und es ist wohl keine Alternative, auf HTML-Kommentare zu verzichten, nur weil der Autor HTML möglicherweise nicht gut genug kennt.
                          Nö, mangelnde Kenntnisse sind kein Grund. Es gibt andere Gründe gegen die Auskommentierung, aber kaum welche dafür.

                          Habe ich die überlesen? Welche wären das?

                          Du bist halt der Meinung: Deine Meinung ist die richtige. Punkt. "Gunnar allmighty"? ;-> [bla bla]
                          Gehen dir die Argumente aus, dass du auf blanke Polemik zurückgreifst?

                          Och, meine Argumente hatte ich genannt (immerhin habe ich welche). Ob sie überzeugen oder nicht, sei jedem freigestellt. Die Polemik gibt es halt gratis dazu! >:->

                          Und zwar immer dann, wenn "absolute" Tips gegeben werden, obwohl Alternativen zumindst im Einzelfall möglich sind (das mag von "prinzipiell erlaubt"/standardkonform bis "im konkreten Einzelfall sinnvoll" gehen). Der "Tipgeber" hat ja i.d.R. überhaupt keinen blassen Schimmer von demjenigen (und den Aufgaben, der Situationen, ...), der hier eine Anfrage gestellt hat. Das hindert manche hier aber nicht daran, Ex-Kathedra, seine Meinung/Auffassung als *die* "Richtige" herauszustellen - zumal absolut ungefragt.

                          Also: Wenn ein Fehler gemacht wird: Gerne korrigieren. Das Auskommentieren von JS-Code ist keiner. Und wenn im auskommentieren JS-Code ein "i--" auftaucht, darauf hinweisen, daß "--" den Kommentar beendet. Nicht von dem war hier gegegeben. Hier war einfach (mal wieder) das Zuschwallen des Fragestellers mit einer Meinung eines Stammposters angesagt. Und dann noch einer Meinung, über die man trefflich streiten kann.

                          Echt tolle Leistung Gunnar - sowas kommt auch immer gut fürs Forumsklima (wobei ich weniger die Stammposter, als die Neuposter meine, die überhaupt nicht nachvollziehen können, warum das nun auf einmal falsch sein soll, was doch in jedem JS-Buch steht) ...

                          Also nochmal: Auskommentierung verhindert, daß Scripte oder Styles als Content gelten. Das ist die semantische Begründung.
                          Schon die Semantik des 'script'- bzw. 'style'-Elements besagt, dass deren Elementinhalt kein „Content“ ist.

                          Das kommt eben darauf an, welche Semantik der Client denn kennt. Was Du aber nicht weißt.

                          Sinnvoller ist es IMHO, sich an die Basisregeln zu halten - zumal wenn nichts dagegen spricht.

                          Da magst Du anderer Meinung sein, das steht dir frei. Aber gewöhne dich daran, daß deine Meinung kein Fakt ist, und deswegen auch nicht als Fakt einem Neuling entgegengeschleudert werden sollte (zumal unbegründet und wider der vorherrschenden Lehre - mag man sich über die Qualität der allermeisten JS-Bücher auch zurecht wundern/ärgern).

                          Du hast keinen blassen Schimmer, welche Clients auf einen HTML-Code losgelassen werden.
                          Brauch ich auch nicht; ein Client, der 'script' bzw. 'style' nicht entsprechend interpretiert, ist kaputt[tm].

                          Nein, er ist nur kein HTML-4-Client, aber vielleicht gleichwohl ein funktionierender HTML-Client.

                          Es hindert dich natürlich *niemand* daran, einen kleinen Button auf deine Homepage zu machen "Only viewed with HTML-4-Client". Ist sicherlich schon mal elitärer, als das früher grassierende "Best viewed with IE" oder so ... >>:->

                          So langsam frage ich mich, warum hat man HTML eigentlich explizit abwärtskompatibel gestaltet (und schafft auch jetzt den Sprung vom abwärtskompatiblen XHTML 1 zum nicht mehr abwärtskompatiblen XHTML 2 nicht, sondern bevorzugt stattdessen ein ebenfalls abwärtskompatibles HTML 5, anfangs sogar gegen den Willen vom W3C), wenn es absolut reicht, zu verkünden: Client kann kein HTML 4, also ist der Client kaputt.

                          Ich glaube, Du hat einen der wichtigsten Grundzüge von HTML nicht verstanden ...

                          Gruß, Cybaer

                          --
                          Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
                          1. Hello out there!

                            Und halte dich dann zukünftig einfach mit Kommentaren zurück

                            Das tu ich doch jetzt schon. Schließlich propagiere ich ja gerade die Zurückhaltung mit Kommentaren beim Einbetten von JavaScript in HTML. Du bist es, der sich mit diesen Kommentaren nicht zurückhalten kann. >:->

                            Nö, mangelnde Kenntnisse sind kein Grund. Es gibt andere Gründe gegen die Auskommentierung, aber kaum welche dafür.
                            Habe ich die überlesen? Welche wären das?

                            Auf [</archiv/2007/1/t143488/#m931693> ff.] hatte ich in diesem Thread schon verwiesen.

                            Das hindert manche hier aber nicht daran, Ex-Kathedra, seine Meinung/Auffassung als *die* "Richtige" herauszustellen

                            Wenn man in Sachen JavaScript mit molily einer Meinung ist, dann kann man gar nicht falschliegen. ;-)

                            warum das nun auf einmal falsch sein soll, was doch in jedem JS-Buch steht

                            Das Argument ist reichlich blöd. Es steht auch in so gut wie jedem JS-Buch, dass JavaScript mittels '<script language="JavaScript">' in HTML eingebettet wird. Ist das deshalb richtig?

                            Außerdem sagte ich nicht "generell falsch", sondern "bestenfalls vollkommen überflüssig, andernfalls falsch".

                            Sinnvoller ist es IMHO, sich an die Basisregeln zu halten - zumal wenn nichts dagegen spricht.

                            Für mich ist "Der Elementinhalt von 'script'- und 'style'-Elementen gehört nicht zum eigentlichen Dokumentinhalt und soll nicht dargestellt werden" eine solche Basisregel.

                            Ich glaube, Du hat einen der wichtigsten Grundzüge von HTML nicht verstanden ...

                            Irrglauben. Ich gehe allerdings von der Prämisse aus, dass so gut wie alle im _heutigen_ Web eingesetzten Clients HTML 4 verstehen, das es immerhin schon seit 10 Jahren gibt. (Und wer mit Netscape 2 unterwegs ist, der tut das aus Nostalgiegründen und _will_ JavaScript-Code im Viewport angezeigt bekommen.)

                            See ya up the road,
                            Gunnar

                            --
                            „Und [dieses Forum] soll […] auch ein Fachforum bleiben und kein Psychologieforum werden.“ (Kirsten Evers)
                            1. Hi,

                              Das tu ich doch jetzt schon. Schließlich propagiere ich ja gerade die Zurückhaltung mit Kommentaren beim Einbetten von JavaScript in HTML. Du bist es, der sich mit diesen Kommentaren nicht zurückhalten kann. >:->

                              Wenn Du dich zurückgehalten hättest, hätte ich mich nicht nicht zurückhalten müssen. ;-) Da ist wohl was falsch gelaufen ... ;)

                              Habe ich die überlesen? Welche wären das?
                              Auf [</archiv/2007/1/t143488/#m931693> ff.] hatte ich in diesem Thread schon verwiesen.

                              Äh, ja, da steht das mit dem "i--", was ich als nicht treffend widerlegt hatte. Sonst noch was? Bin ich blind? %-)

                              Das hindert manche hier aber nicht daran, Ex-Kathedra, seine Meinung/Auffassung als *die* "Richtige" herauszustellen

                              Wenn man in Sachen JavaScript mit molily einer Meinung ist, dann kann man gar nicht falschliegen. ;-)

                              Ich bezweifel, daß molily einen Poster hier mit "bestenfalls vollkommen überflüssig, andernfalls falsch" angegangen wäre, wenn der JS auskommentiert hätte. Andernfalls: Auch molily kann irren. Aber so etwas wird nicht öffentlich breitgetreten - er bekommt dann im Zweifel nur eine E-Mail. ;-)

                              Das Argument ist reichlich blöd.

                              Nein (s.u.).

                              Es steht auch in so gut wie jedem JS-Buch, dass JavaScript mittels '<script language="JavaScript">' in HTML eingebettet wird. Ist das deshalb richtig?

                              Nein (obwohl ... lassen wir das). Das die Bücher i.A. Schrott sind, schrieb ich ja. Aber das weiß der postende JS-Anfänger ja nicht. Es wäre IMHO sinnvoll, ihm in diesen Fällen zu sagen, warum er irrt. Aber eine Begründung für das Unterlassen der Auskommentierung fehlt ja auch bislang ... >:->

                              Außerdem sagte ich nicht "generell falsch", sondern "bestenfalls vollkommen überflüssig, andernfalls falsch".

                              OK. Also meine Meinung: "bestenfalls hilfreich, andernfalls ein wenig überflüssig" ;-)

                              Sinnvoller ist es IMHO, sich an die Basisregeln zu halten - zumal wenn nichts dagegen spricht.
                              Für mich ist "Der Elementinhalt von 'script'- und 'style'-Elementen gehört nicht zum eigentlichen Dokumentinhalt und soll nicht dargestellt werden" eine solche Basisregel.

                              HTML 4/XHTML 1 ist keine "Basis". Es ist ein Standard von mehreren (offiziellen wie inoffziellen) HTML-Versionen/-Derivaten, die auf dieser einheitlichen Basis arbeiten.

                              Ich glaube, Du hat einen der wichtigsten Grundzüge von HTML nicht verstanden ...
                              Irrglauben. Ich gehe allerdings von der Prämisse aus, dass so gut wie alle im _heutigen_ Web eingesetzten Clients HTML 4 verstehen, das es immerhin schon seit 10 Jahren gibt.

                              Ja, davon gehst Du aus. Das meinte ich mit Gunnar allmighty. :)

                              Ich gehe erstmal von nichts aus - außer dem HTT-Protokoll und einem HTML-Client (egal, was das für einer ist: HTML-4-Browser, Bot oder Line-Reader für einen Behinderten, der aber HTML-4 nicht beherrscht (hat der Line-Reader-Nutzer bislang auch nicht gebraucht, weil Scripte ja üblicherweise auskommentiert werden >;->) - und irgendwie bringe ich auch noch "Kinder" & "Tiere" unter. ;->

                              (Und wer mit Netscape 2 unterwegs ist, der tut das aus Nostalgiegründen und _will_ JavaScript-Code im Viewport angezeigt bekommen.)

                              Es wäre schön, wenn diese "trifft nur NS2-Nutzer"-Diffamierung mal aufhört. Ich hatte andere Beispiele genannt, und ich weiß echt nicht, wo man da alles Probleme bekommen kann. Ich kenne halt nicht alles.

                              Aber wenn Du alles kennst, mach' halt deinen "Only viewed with HTML 4 browser"-Bepperl auf deine Homepage, und gut ist. Ich bevorzuge halt nach wie vor meinen (wenn auch virtuellen) "Best viewed with any browser"-Bepperl ...

                              Gruß, Cybaer

                              --
                              Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
                      2. Hallo,

                        Wenn ich also JS ... in HTML einbette, dann sollte ich bereits wissen, daß ich statt i-- halt i-=1 schreiben muß

                        Warum bitte muss ich das?

                        Das war in JS schon immer so, und es ist wohl keine Alternative, auf HTML-Kommentare zu verzichten, nur weil der Autor HTML möglicherweise nicht gut genug kennt.

                        Ich verstehe nur Bahnhof.

                        Auskommentierung verhindert, daß Scripte oder Styles als Content gelten.

                        Ja. Ziel dieser Aktion sind bei JavaScript v.a. Netscape < 2 und IE < 3.

                        Du hast keinen blassen Schimmer, welche Clients auf einen HTML-Code losgelassen werden.

                        Deshalb schreibe ich trotzdem HTML 4 bzw. XHTML 1 und nicht quasi HTML 2, weil mir dieses hypothetisch-akademische Spekulieren (»man kann nie wissen«) gleichgültig ist.

                        Schaden kann die Auskommentierung nach wie vor nicht, sie kann aber absolut (und auch heutzutage noch) von Nutzen sein.

                        Wenn ich mal einen Netscape 2 auf meiner Seite sehe, sage ich Bescheid.

                        Mathias

                        1. Hi,

                          Wenn ich also JS ... in HTML einbette, dann sollte ich bereits wissen, daß ich statt i-- halt i-=1 schreiben muß
                          Warum bitte muss ich das?

                          Das mußt Du nicht - Du hast mich unvollständig zitiert.

                          Wenn ich JS *auskommentiert* in HTML einbette, dann sollte ich bereits wissen, ..., denn wenn ich HTML-Kommentare verwende, sollte ich auch wissen, durch was sie beendet werden. Dieses Wissen sollte auch bereits vorher vorhanden sein (nämlich: mit den HTML-Grundkenntnissen erworben), und durch die Verwendung von JS nicht verlorengegangen sein. :->

                          Das war in JS schon immer so, und es ist wohl keine Alternative, auf HTML-Kommentare zu verzichten, nur weil der Autor HTML möglicherweise nicht gut genug kennt.
                          Ich verstehe nur Bahnhof.

                          Seit es LiveScript/JavaScript gibt, wird regelmäßig und in allen Publikationen dazu geraten, das JS als HTML-Kommentar einzubinden (mal das später hinzugekommene Einbinden von externen Scripten außen vorgelassen). Das impliziert auch immer, innerhalb des eingebetteten Scriptes auf die Zeichenfolge "--" entweder zu verzichten, oder sie zu maskieren (wie auch z.B. "</script>" maskiert wird).

                          Das mag heutzutage in Vergessenheit geraten sein, da die meisten Clients diese Auskommentierung nicht benötigen, aber früher war es in der Tat so, daß der Non-JS-Browser den nach z.B. einem "i--" folgenden Quelltext als Content angezeigt hat.

                          Auskommentierung verhindert, daß Scripte oder Styles als Content gelten.
                          Ja. Ziel dieser Aktion sind bei JavaScript v.a. Netscape < 2 und IE < 3.

                          Mal abgesehen vom Umstand, daß ich bekanntermaßen Abwärtskompatibilität schätze, zumal wenn sie en passant (und ohne Nachteile) zu haben ist: "PHP" als Beispiel hatte ich genannt.

                          Oder: Ich habe z.B. auch bei einem Kunden eine Site-interne Suchroutine übernommen, die den Content, Description und Keywords der eigenen Seiten durchsucht. Sicher ist es ehrenhaft (und dummerweise unbezahlt), diese Suchmaschine zu verbessern, so daß sie Daten im HEAD prinzipiell ignoriert (sollte sie regelkonform ja ohnehin, aber ob sie sich daran hält, weiß ich nicht - die Browser machen es ja fälschlicherweise auch nicht). Auch wäre es wünschenswert, sie zumindest dahingehend zu impfen, SCRIPT-Elemente zu ignorieren. Aber: sie existiert, sie funktioniert, und wenn ich JS-Code einbette ist es schön zu wissen, daß der eingebette Code nicht über die Suchmaschine gefunden werden kann, da sie zumindest Kommentare ignoriert.

                          Du hast keinen blassen Schimmer, welche Clients auf einen HTML-Code losgelassen werden.
                          Deshalb schreibe ich trotzdem HTML 4 bzw. XHTML 1 und nicht quasi HTML 2, weil mir dieses hypothetisch-akademische Spekulieren (»man kann nie wissen«) gleichgültig ist.

                          Ja und? Niemand hindert dich daran. Auskommentieren von JS und/oder CSS macht weder aus HTML 4 noch aus XHTML 1 "quasi HTML 2". Was ist das also für ein Argument?

                          Sind HTML-Kommentare in HTML 4 oder XHTML 1 verboten? Ist mir nicht erinnerlich ... =:-)

                          Wenn ich mal einen Netscape 2 auf meiner Seite sehe, sage ich Bescheid.

                          Läßt sich einrichten! ;-))

                          Auch wenn ich echt bezweifle, ob Du wirklich weißt, nach welchen Kriterien die ganzen (guten und bösen) Bots, die auch Du vermutlich auf deiner Site hast, deinen HTML-Code konkret interpretieren ...

                          Gruß, Cybaer

                          PS: BTW: Mein aktuell ältester "aktueller" Client war vor ein paar Tagen ein Handy-Browser, der sich glaubhaft als "MSIE 3.02" ausgab (unter Windows CE). Hätte ich auch nicht gedacht, daß noch so alte Handys im Einsatz, geschweige denn im Internet sind.

                          --
                          Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
                          1. Hallo,

                            Auskommentieren von JS und/oder CSS macht weder aus HTML 4 noch aus XHTML 1 "quasi HTML 2". Was ist das also für ein Argument?

                            Es ist die Frage, wohin Abwärtskompatiblität führt, wenn ich Netscape 1 einschließe. Wenn man wirklich diesen Browsern eine lesbare Seite bieten will, dann kommt man wahrscheinlich ins Teufels Küche, weil nicht nur Scripte und Styles problematisch sind.

                            Auch wenn ich echt bezweifle, ob Du wirklich weißt, nach welchen Kriterien die ganzen (guten und bösen) Bots, die auch Du vermutlich auf deiner Site hast, deinen HTML-Code konkret interpretieren ...

                            Kaputte Bots, die in dem Punkt kein HTML 4 verstehen, sind mir einfach egal. Das halten Milliarden andere Sites so, das halten alle Sites so, an denen ich je mitgearbeitet habe, und mir sind dadurch nie merkliche Nachteile entstanden, weil ich keine wichtigen Bots kenne, die dermaßen kaputt sind.
                            Gute Bots verstehen zumindest rudimentär HTML 4. Wenn sie meine Seite demgemäß verarbeiten, gibt es keine Probleme.

                            Mathias

                            1. Hi,

                              Es ist die Frage, wohin Abwärtskompatiblität führt, wenn ich Netscape 1 einschließe. Wenn man wirklich diesen Browsern eine lesbare Seite bieten will, dann kommt man wahrscheinlich ins Teufels Küche, weil nicht nur Scripte und Styles problematisch sind.

                              Sondern was noch?

                              Ich denke, mit der Grundvoraussetzung, "unbekannte Tags sind zu ignorieren", der Inhalt unbekannter Elemente folglich darzustellen, ist eigentlich alles gesagt, oder?

                              Wo siehst Du noch Probleme?

                              Also ich sehe sie erst bei noch älteren Browsern, die z.B. kein TABLE kennen. Aber ich würde es auch nie jemanden als "Fehler" ankreiden, wenn er (spätestens im letzten) TD den Content nicht mit einem BR abschließt. Machen kann man das, wie auch Leerzeichen hinter dem öffnenden TD, natürlich trotzdem.

                              Gute Bots verstehen zumindest rudimentär HTML 4.

                              Und wenn nicht, sind sie dennoch *nicht* "kaputt".

                              Gruß, Cybaer

                              --
                              Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
                2. Hi,

                  Eventuell doch: [</archiv/2007/1/t143488/#m931693> ff.]

                  Und, BTW, zu molilys Einwand, daß "--" im auskommentierten Scriptbereich nicht tragisch in HTML wäre:

                  script hat [in HTML] als Inhaltsmodell CDATA, daher wird dieser Kommentar m.W. nie als Kommentar gesehen, sondern als irgendwelche Zeichendaten.

                  *Das* kommt eben wohl auf die HTML-Version an, die der Browser beherrscht! Ältere (Non-JS-)Browser beenden hier erfahrungsgemäß korrekt den Kommentar, und stellen den folgenden Code als Content dar.

                  Gruß, Cybaer

                  --
                  Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!