Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Branch: master
Fetching contributors…

Cannot retrieve contributors at this time

5 lines (4 sloc) 103.247 kB
<html><head><title>Why W3Schools Sucks</title><style type="text/css">ol{margin:0;padding:0}p{margin:0}.c10{color:#000000;font-size:12pt;font-family:Arial;font-weight:bold}.c0{color:#000000;font-size:10pt;font-family:Arial;font-weight:bold}.c9{padding-left:0pt;line-height:1.15;direction:ltr;margin-left:36.0pt}.c11{padding-left:0pt;line-height:1.15;direction:ltr;margin-left:72.0pt}.c2{color:#000099;font-size:10pt;text-decoration:underline;font-family:Arial}.c6{color:#444444;font-size:10pt;font-family:Arial;font-weight:bold}.c12{color:#000000;font-size:18pt;font-family:Arial}.c13{color:#444444;font-size:10pt;font-family:Arial}.c17{color:#000000;font-size:11pt;font-family:Arial}.c25{color:#000000;font-size:12pt;font-family:Arial}.c26{color:#000000;font-size:14pt;font-family:Arial}.c16{color:#999999;font-size:10pt;font-family:Arial}.c3{line-height:1.15;text-indent:0pt;direction:ltr}.c1{color:#000000;font-size:10pt;font-family:Arial}.c19{color:#3d8c3a;font-size:10pt;font-family:Arial}.c7{line-height:1.15;text-indent:36.0pt;direction:ltr}.c4{color:#45818e;font-size:10pt;font-family:Arial}.c22{color:#000000;font-size:15pt;font-family:Arial}.c5{color:#666666;font-size:10pt;font-family:Arial}.c30{color:#999999;font-size:10pt;font-family:Consolas}.c29{color:#000099;font-size:11pt;font-family:Arial}.c8{margin:5px;border:1px solid black}.c14{list-style-type:circle}.c18{margin-left:36.0pt}.c31{text-align:right}.c28{text-align:justify}.c23{text-decoration:underline}.c15{font-style:italic}.c20{list-style-type:disc}.c27{background-color:#ffffff}.c24{text-decoration:line-through}.c21{font-weight:bold}p{color:#000000;font-size:11pt;font-family:Arial}.heading1{font-size:24pt;font-weight:bold}.heading2{font-size:18pt;font-weight:bold}.heading3{font-size:14pt;font-weight:bold}.heading4{font-size:12pt;font-weight:bold}.heading5{font-size:11pt;font-weight:bold}.heading6{font-size:10pt;font-weight:bold}</style></head><body class="c27"><p class="c3"><span class="c5">A few of us JavaScript developers have been collecting cases where w3schools.com contains inaccurate information or just really bad advice. We certainly do not advocate that anyone use w3schools as a reference or place to learn techniques.</span></p><p class="c3"><span class="c5">&nbsp;</span></p><p class="c3"><span class="c5">The Mozilla Docs Center (MDC) is much much better</span><sup><a href="#cmnt1" name="cmnt_ref1">[a]</a></sup><span class="c5">. It is also a wiki (little known fact), which means we, as knowledgeable web developers, can add or change information so the pages are as effective as possible.</span></p><p class="c3"><span class="c5">&nbsp;</span></p><p class="c3"><span class="c5">We are interested in collecting some more examples of w3school&rsquo;s harmful influence. Please add them below.</span></p><p class="c3"><span class="c0">We&rsquo;ll be publishing this to a larger audience next week on</span><span class="c0"><a href="http://www.google.com/url?q=http%3A%2F%2Fw3fools.com%2F&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNH1IVpiDIDfLqc1HUo0C2mWY98vQA"> </a></span><span class="c0 c23"><a href="http://www.google.com/url?q=http%3A%2F%2Fw3fools.com%2F&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNH1IVpiDIDfLqc1HUo0C2mWY98vQA">w3fools.com</a></span><span class="c0"> &nbsp;;)</span></p><p class="c3"><span class="c5">(and the site will go on github on monday: /paulirish/w3fools/ -- you&rsquo;re welcome to contribute again then!)</span></p><p class="c3 c31"><span class="c5">~ paul irish, jan 7th, 2011</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c0">Contributors</span><span class="c1">: @paul_irish, @ajpiano, @gf3, @zetafleet, @nimbupani, @danheberden, dabear, @erichynds, @kangax, robfaraj, @devongovett, @antimatter15, millermedeiros, @sephr, @ard, @peolanha, atornblad, @lightroy, @ekashida, @edwinm, @</span><span class="c1">bradneuberg</span><sup><a href="#cmnt2" name="cmnt_ref2">[b]</a></sup><span class="c1">, @darcy_clarke, @c_t_montgomery, @jamespearce, @kriskowal, @mrnibbles, @addyosmani, @miketaylr, @franksvalli @jerem, @brianloveswords @trygve_lie, @scriptin, @heycam, @gridinoc, @kfranqueiro</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c16">^ by adding your name here you&rsquo;re okay with us publishing it on the site. :) </span></p><p class="c3"><span class="c16">And thanks for your help everyone. Improving developer documentation takes a team effort. </span><span class="c30">_o/ \o_</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c10">Site intro:</span></p><p class="c3"><span class="c1">Did you know?</span></p><ol class="c20"><li class="c9" value="1"><span class="c1">W3Schools.com is absolutely not affiliated with the W3C.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li></ol><ol class="c14"><li class="c11" value="1"><span class="c1">In fact the W3C has asked them to disavow any connection by explicitly stating they are unrelated. W3Schools refused.</span></li></ol><ol class="c20"><li class="c9" value="2"><span class="c1">W3Schools publishes inaccurate, misleading, and confusing content.</span><sup><a href="#cmnt3" name="cmnt_ref3">[c]</a></sup></li><li class="c9"><span class="c1">W3Schools sell their certificates (for $95), which actually have no value, because they&rsquo;re not affiliated with any educational organizations/institutions.</span></li></ol><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">We believe w3schools is harmful to the web. Web developers deserve better.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">&lt;something about putting &lsquo;mdc&rsquo; in your search query&gt;</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">On recommendations.. htmldog for beginner html/css, MDC for intermediate css and javascript, i think.</span></p><p class="c3"><span class="c12">&nbsp;</span></p><p class="c3"><span class="c12 c21">Goals :</span></p><ol class="c20"><li class="c9" value="1"><span class="c0">Shame</span><span class="c1">.</span></li><li class="c9"><span class="c1">More people to know they have NO RELATION to W3C</span></li></ol><ol class="c14"><li class="c11" value="1"><span class="c1">New users know w3schools is not official and their certificates are not valid (a lot of them with not enough grasp of English purchase these certificates which are not that cheap).</span></li><li class="c11"><span class="c1">Make sure it does not land in any top results for searches on writing good markup, style and script. </span></li></ol><ol class="c20"><li class="c9" value="3"><span class="c1">Better cognizance that w3schools is riddled with bad information</span></li></ol><ol class="c14"><li class="c11" value="1"><span class="c1">urge sites to remove links to w3schools</span><sup><a href="#cmnt4" name="cmnt_ref4">[d]</a></sup><span class="c1">. NEVER AGAIN.</span></li></ol><ol class="c20"><li class="c9" value="4"><span class="c1">Along with promoteJS, sharing the fact that MDC is the BEST resource for Javascript &amp; CSS...</span></li></ol><ol class="c14"><li class="c11" value="1"><span class="c1">Is it for HTML? I have no idea..</span></li><li class="c11"><span class="c1">^-- I&rsquo;ve heard that htmldog is a decent HTML resource </span></li><li class="c11"><span class="c1">For HTML, we should use </span><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3.org%2Fhtml%2Fwiki%2FLearn&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFWAlU2tYAT1w5DhIVXbfQT462Jcg">http://www.w3.org/html/wiki/Learn</a></span><span class="c1"> (see: </span><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3.org%2Fhtml%2Fwiki%2FElements&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFkzXTbTAdU8HHhrxgi0fzaVb_66A">http://www.w3.org/html/wiki/Elements</a></span><span class="c1">)</span><sup><a href="#cmnt5" name="cmnt_ref5">[e]</a></sup></li></ol><ol class="c20"><li class="c9" value="5"><span class="c1">W3schools to consider </span><span class="c1">wikifying/github&rsquo;ing their content</span><sup><a href="#cmnt6" name="cmnt_ref6">[f]</a></sup><span class="c1"> so community will self correct</span></li></ol><ol class="c14"><li class="c11" value="1"><span class="c1">Yeah right. They are just there to make money on ads</span></li></ol><ol class="c20"><li class="c9" value="6"><span class="c1">Help rather than pillory ;-) - tbh a lot of their mistakes are just because things have moved on and they&rsquo;re not editing the old material (like 10 years old!) to bring it up-to-date. Wiki or similar would be perfect. </span><span class="c1">Question is... what motivation do they have to improve things? </span><sup><a href="#cmnt7" name="cmnt_ref7">[g]</a></sup><span class="c0">What is the StackOverflow to W3Schools&rsquo; ExpertsExchange ?</span></li></ol><ol class="c14"><li class="c11" value="1"><span class="c1">IMHO it&rsquo;s the MDC... it&rsquo;s a wiki. It&rsquo;s got decent enough SEO.. Until/Unless I&rsquo;m successful at getting the MDC to be moved from Mozilla to the W3C and then blow it out to totally game the SEO biz, while being a wiki and being super comprehensive..... .. well that </span><span class="c1">sounds good</span><sup><a href="#cmnt8" name="cmnt_ref8">[h]</a></sup><span class="c1">. :) ~paul</span></li></ol><ol class="c20"><li class="c9" value="7"><span class="c1">&nbsp;</span></li></ol><p class="c3"><span class="c1"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c26 c21">Why w3schools.com sucks</span></p><p class="c3"><span class="c0">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fhtml5%2Ftag_script.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGCcLg-CyC37uX_MmT7c1UddYSH-w">http://www.w3schools.com/html5/tag_script.asp</a></span><span class="c1"> &quot;The required `type` attribute specifies the MIME type of the script.&quot; -- this should be &ldquo;optional&rdquo;, not &ldquo;required&rdquo;. </span><span class="c4">I think that it should still be recommended by w3schools though.</span><span class="c1"> BECAUSE YOU HATE YOUR USERS AND WANT TO SEND THEM BYTES? HERE HAVE SOME MORE BYTES!!!!!! :&rsquo;( - </span><span class="c5">here&rsquo;s a potentially valid case where it helps: I&rsquo;ve seen WebLogic app servers that fail to automatically provide a valid Content-Type header in responses for JS files. &nbsp;If it comes down with the wrong content-type, isn&rsquo;t it possible for sh*t to happen? &nbsp;(I know I&rsquo;ve seen errors in FF&rsquo;s console regardless) </span><span class="c1">HUMPH! WebLogic can EABOD. &nbsp;--Well, yeah, agreed. &nbsp;Also I shoulda made this a comment :( </span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fjs%2Fjs_timing.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNEmqQxqOg-n7DQPcn45EYb6_qmaqw">http://www.w3schools.com/js/js_timing.asp</a></span><span class="c1"> this is a bullshit page. Why? you </span><span class="c0 c23 c15">never</span><span class="c1"> pass a string to setTimeout unless you like using eval. Doing this also means you can&#39;t use any variables from your local scope. &nbsp;Also, the examples have a ton of global variables.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fjs%2Fjs_browser.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNH2IdkGPLerZzCBt3U3H4Xbokfjrw">http://www.w3schools.com/js/js_browser.asp</a></span><span class="c1"> also abysmal</span></p><p class="c3"><span class="c1">document.write() has a tendency to trash a page and is one of the poorest ways possible to add content. It also means that you can&rsquo;t defer/asynchronously &nbsp;load a script and your DOM loading is delayed because the browser has to wait for your document.write.</span></p><p class="c3"><span class="c1">Oh and user-agent sniffing is a bad thing. So is sniffing just about any parts of the navigator object. DHFGOSIFJSJDFOIH god this page is so badawful.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fjsref%2Fjsref_eval.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNE3sFW_xBAJWn59O6YuR8olfS_LSA">http://www.w3schools.com/jsref/jsref_eval.asp</a></span><span class="c1"> &quot;First, eval() determines if the argument is a valid string, then eval() parses the string looking for JavaScript code. If it finds any JavaScript code, it will be executed.&quot; &nbsp;LOLWAT? Eval certainly does not parse a string to determine whether or not it&#39;s javascript.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2FJS%2Fjs_statements.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHJ5hbhAfeKJL2AzCUCYIXjuXHdiQ">http://www.w3schools.com/JS/js_statements.asp</a></span><span class="c1"> &ldquo;JavaScript code (or just JavaScript) is a sequence of JavaScript statements. Each statement is executed by the browser in the sequence they are written.&rdquo; </span></p><p class="c3"><span class="c1">A) Apparently declarations and expressions can go right to hell, and</span></p><p class="c3"><span class="c1">B) &ldquo;Each statement is executed by the browser in the sequence they are written&rdquo; is just wrong.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fhtml%2Fhtml_styles.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNEzt-4ts1bMpx66KNGqLY1pXbIFbQ">http://www.w3schools.com/html/html_styles.asp</a></span><span class="c1"> &nbsp;all absolutely deprecated. could use a notice.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fhtml%2Fhtml_frames.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFwfCm-2PN_i8qCmon1I2duCZ11nw">http://www.w3schools.com/html/html_frames.asp</a></span><span class="c1"> whats up 1995. (Still usable for online docs)</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fhtml%2Fhtml_elements.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHqjg9weX_jnt2RVczt1R21-NfPcw">http://www.w3schools.com/html/html_elements.asp</a></span><span class="c1"> no doctype</span></p><p class="c3"><span class="c1">&quot;Most browsers will display HTML correctly even if you forget the end tag:&quot; </span></p><p class="c3 c18"><span class="c1">not true, &ldquo;correctly&rdquo; is not &ldquo;try to guess and maybe get it right some of the time&rdquo;</span></p><p class="c3 c18"><span class="c1">&lt;P&gt; will. &lt;P&gt; is explicitly stated to have an optional close tag. most other elements are not.</span><span class="c1"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3.org%2FTR%2FREC-html40%2Fstruct%2Ftext.html%23h-9.3.1&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGvV17PuHitqmmu76XFfWL3NuBxig"> </a></span><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3.org%2FTR%2FREC-html40%2Fstruct%2Ftext.html%23h-9.3.1&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGvV17PuHitqmmu76XFfWL3NuBxig">http://www.w3.org/TR/REC-html40/struct/text.html#h-9.3.1</a></span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3.org%2FTR%2FREC-html40%2Fstruct%2Ftext.html%23h-9.3.1&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGvV17PuHitqmmu76XFfWL3NuBxig">&nbsp;</a></span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fjquery%2Ftryit.asp%3Ffilename%3Dtryjquery_ajax2&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNF3MYrvI7ubNMwEDNNILrlPyCY6hA">http://www.w3schools.com/jquery/tryit.asp?filename=tryjquery_ajax2</a></span><span class="c1"> async=false, come on! ASYNCHRONOUS COADS ARE HARD :(</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fhtml%2Fhtml_getstarted.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNF_fV0k_IxZxnRz2Bx7niJXpeGDjg">http://www.w3schools.com/html/html_getstarted.asp</a></span></p><p class="c3 c18"><span class="c1">&quot; .HTM or .HTML File Extension?&rdquo;</span></p><p class="c3 c18"><span class="c1">&quot;When &nbsp;you save an HTML file, you can use either the .htm or the .html file &nbsp;extension. We use .htm in our examples. It is a habit from the past, &nbsp;when the software only allowed three letters in file extensions. With &nbsp;new software it is perfectly safe to use .html&quot;</span></p><p class="c3"><span class="c1">with &quot;new software&quot; ??? what ? &nbsp;(Apparently Unix is &ldquo;new software&rdquo; since it has supported arbitrary 255-character file names since, oh, only 1983!)</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fhtml5%2Fhtml5_webstorage.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNG-TgOXqx-XvfyxL-cwmgIy7ypxxA">http://www.w3schools.com/html5/html5_webstorage.asp</a></span><span class="c1"> localStorage and sessionStorage are called &ldquo;methods,&rdquo; rather than objects that implement the HTML5 Storage interface. Nothing about their properties and methods are mentioned, it just shows a simple dot syntax getter example. &gt;: |</span></p><p class="c3"><span class="c1">And this &ldquo;content&rdquo; is certainly not as old as other page&rsquo;s.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fcss%2Fpr_class_display.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGl85woNOlnio7RtaCiPvLKsmnjHg">http://www.w3schools.com/css/pr_class_display.asp</a></span></p><p class="c3 c18"><span class="c1">&ldquo;No versions of Internet Explorer (including IE8) support the property values &quot;inline-table&quot;, &quot;run-in&quot;, &quot;table&quot;, &quot;table-caption&quot;, &nbsp;&quot;table-cell&quot;, &nbsp;&quot;table-column&quot;, &quot;table-column-group&quot;, &quot;table-row&quot;, or &nbsp;&quot;table-row-group&quot;. &rdquo; </span></p><p class="c3"><span class="c1">This is bullshit; IE8 supports all of these.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fw3schools.com%2Fhtmldom%2Fdom_nodes_access.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHgCaLm3Q7TCjtAFW3b363Z1Q1aMQ">http://w3schools.com/htmldom/dom_nodes_access.asp</a></span><span class="c1"> </span></p><p class="c3"><span class="c1">One of many examples. Code does not use the &ldquo;</span><span class="c1 c15">var&rdquo; </span><span class="c1">keyword. They don&rsquo;t explain the difference between using and not using the keyword; var should always be used.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Ftags%2Ftag_q.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGUXKAU-MWiRrJnnaswWsmgaG9DCw">http://www.w3schools.com/tags/tag_q.asp</a></span><span class="c1"> ALSO WRONG. AS IN NOT FACTUAL..</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fjsbin.com%2Fipoqu4&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHOf8_xZcnjDl9D9NH8TKbczQbqWg">http://jsbin.com/ipoqu4</a></span><span class="c1"> (ya works in IE8, not IE7 compat)</span></p><p class="c3"><span class="c1">So that page is probably out of date, along with fucking everything on their site, which is why it blows.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">Prolific use of new Array() and array[0] = &quot;foo&quot;; array[1] = &quot;bar&quot; instead of [&quot;foo&quot;, &quot;bar&quot;].</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">Love their footer: &ldquo;W3Schools is for training only. We do not warrant the correctness of its content. The risk from using it lies entirely with &nbsp;the user.&rdquo; Yet, they offer certifications?</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">Love their markup: table in table in table in table...</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">The code examples are displayed without indents or syntax highlighting.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fcss%2Fpr_pseudo_after.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFC3IzQqFpHqiNY9I1h8DS-JvPsMg">http://www.w3schools.com/css/pr_pseudo_after.asp</a></span></p><p class="c3"><span class="c1">WTF. Play a sound after each occurrence of an h1 element HUH? This almost seems like a </span><span class="c1">joke</span><sup><a href="#cmnt9" name="cmnt_ref9">[i]</a></sup><span class="c1">. It seems like an insult</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fcss3%2Fcss3_pr_target.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNG9TPEVgWD95Ow5yZI_EIZnx-BGrA">http://www.w3schools.com/css3/css3_pr_target.asp</a></span><span class="c1"> &nbsp;css target property? UMM..</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fhtml%2Fhtml_headings.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFvc_Cq853x8BFj0oBRhtb0D2T_IA">http://www.w3schools.com/html/html_headings.asp</a></span><span class="c1"> &ldquo;Note: Browsers automatically add an empty line before and after a heading.&rdquo; orrrr, actually it&rsquo;s because the browser&rsquo;s default stylesheet defines them as block-level, and that margin-top and margin-bottom are non-zero values -- no lines are added</span></p><p class="c3"><span class="c1"> </span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fjs%2Fjs_functions.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGtbLn1Yke-hfKts0WIkMAAppw6mA">http://www.w3schools.com/js/js_functions.asp</a></span><span class="c1"> </span></p><p class="c3 c18"><span class="c1">&ldquo;If you declare a variable within a function, the variable can only be accessed within that function. When you exit the function, the variable is destroyed.&rdquo; </span></p><p class="c3"><span class="c1">The whole concept of closures doesn&rsquo;t exist at w3schools...</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">Also they never go over the difference between a function declaration and a function expression. I know this is for beginners, but they could at least put it in the advanced section, or make it apparent that functions are first-class?</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fjs%2Fjs_objects.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHSJPfyF3CQzgpqT9QKsDBGlBTMPg">http://www.w3schools.com/js/js_objects.asp</a></span><span class="c1"> - Unnecessary use of `new Object()` instead of object literal `{}` on &ldquo;creating your own objects&rdquo;. Bad naming used for object constructors, they call it &ldquo;template of an object&rdquo;. Don&rsquo;t explain that calling the constructor using &ldquo;new&rdquo; will return a new object - sounds like a job for Captain Obvious.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fjs%2Fjs_obj_boolean.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHPuvw5s4xyBaa0-Tgn7E8xZLhKaQ">http://www.w3schools.com/js/js_obj_boolean.asp</a></span></p><p class="c3"><span class="c1">new Boolean() is completely useless. Well, typecasting... &ldquo;!!&rdquo; works just as well &mdash; !! actually works much much better since if you use Boolean() you end up with a boxed value (Boolean(false) !== false) &ndash; I think you mean (new Boolean(false) !== false). typeof new Boolean(&lsquo;sup&rsquo;) === &lsquo;object&rsquo;, typeof Boolean(&lsquo;hey&rdquo;) === &lsquo;boolean&rsquo;</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fjs%2Fjs_loop_for.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGPQ2adoNIpCBB9OlgHIkZeceOUqQ">http://www.w3schools.com/js/js_loop_for.asp</a></span></p><p class="c3"><span class="c1">&quot;for (var=startvalue;var&lt;=endvalue;var=var+increment)&quot; - not only they forget about using &#39;var&#39; keyword to prevent the variable from leaking to the global scope, </span><span class="c1">but also they use &#39;var&#39; as a variable name, which is forbidden</span><sup><a href="#cmnt10" name="cmnt_ref10">[j]</a></sup><span class="c1">.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fjs%2Fjs_summary.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNG_-bQSt5XARxDn-yekRaBQw4lddg">http://www.w3schools.com/js/js_summary.asp</a></span></p><p class="c3"><span class="c1">saying that &ldquo;now you know JavaScript&rdquo; (after reading many wrong info) and recommending ASP as the next step. </span><span class="c1">The next step should be learning node.js or any other back-end language.</span><sup><a href="#cmnt11" name="cmnt_ref11">[k]</a></sup><span class="c1"> Not to mention that DHTML is referenced as another possible next step!</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fjs%2Fjs_obj_intro.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGgq03-3xfSRo1Li6mIZKnRXQi1lw">http://www.w3schools.com/js/js_obj_intro.asp</a></span></p><p class="c3"><span class="c1">&ldquo;JavaScript is an Object Oriented Programming (OOP) language. An OOP language allows you to define your own objects and make your own variable types.&rdquo; - </span><span class="c1">this is just terribly wrong in each part</span><sup><a href="#cmnt12" name="cmnt_ref12">[l]</a></sup></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fjs%2Fjs_loop_for_in.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNF48r-Tf-Z5Nwxhq8KM6Fc5jyz0Lw">http://www.w3schools.com/js/js_loop_for_in.asp</a></span></p><p class="c3"><span class="c1">Advocates the use of for-in loops for arrays, and makes no mention of problems and hasOwnProperty. &nbsp;Also, the note about the variable argument sounds like it&rsquo;s half-BS to me.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fjs%2Fjs_whereto.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHK6R8t76b8AftSB7MatnTiKXM0Rg">http://www.w3schools.com/js/js_whereto.asp</a></span></p><p class="c3"><span class="c1">Advocates placing scripts in the &lt;head&gt; with no explanation of the consequences in older browsers such as IE.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">&ldquo;If you don&#39;t want your script to be placed inside a function, or if your script should write page content, it should be placed in the body section.&rdquo; &ndash; Whaaat?</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fjs%2Fjs_popup.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFa0WLU_0tle_eyPTyvS09cMq-Nfw">http://www.w3schools.com/js/js_popup.asp</a></span></p><p class="c3"><span class="c1">Alerts and confirm dialogs with no explanation that they should generally be avoided. &nbsp;Also no discussion of console.log in newer browsers for debugging purposes.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fjsref%2Fjsref_regexp_compile.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGFda2nMydoex4fHkvTOUoWzGnNxw">http://www.w3schools.com/jsref/jsref_regexp_compile.asp</a></span><span class="c1"> DEPRECATED SINCE FOREVER AGO. WHY IS THIS LISTED?!</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fjs%2Fjs_intro.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGuoV-xuK2HG4ZZ6madFbBwuQl3sA">http://www.w3schools.com/js/js_intro.asp</a></span></p><p class="c3"><span class="c1">&ldquo;JavaScript&#39;s official name is ECMAScript.&rdquo; - Technically.... JavaScript is a trademark originally registered by Sun Microsystems and Licensed to Netscape when the language was new. Sun was acquired by Oracle, which now owns the trademark, and Netscape passed the license for the trademark on to Mozilla. The language was eventually standardized under the creative name ECMAScript by the EMCA international standards organization to avoid legal conflicts with the trademark owner. Similarly, Microsoft named its clone of JavaScript, JScript. Meanwhile, JavaScriptCore, the implementation of ECMAScript in Apple&rsquo;s Safari, appears to be willing to take the chance, and Google&rsquo;s v8 is off </span><span class="c1 c24">doing its own thing </span><span class="c1">being awesome and breaking the mold, man. Also, JavaScript is a subset (or superset depending upon which version of JS you are describing :)) of ECMAScript </span><span class="c0 c15 c23">(or?)</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fw3schools.com%2Fwap%2Fdefault.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHTTAdpIQNlkN46lyEtcc5Q3GtqyA">http://w3schools.com/wap/default.asp</a></span><span class="c1"> </span></p><p class="c3"><span class="c1">&ldquo;WML is the language used to create pages for WAP browsers. This tutorial will teach you how to convert HTML pages to pocket format, so that the information can be accessed from wireless clients, like mobile phones.&rdquo; - it&rsquo;s like 2003 never happened, let alone 2007. Also probably the last remaining references to WMLScript on the entire interweb. Oh, and why is mobile web stuff classified under &lsquo;Web Services&rsquo;?</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fjsref%2Fjsref_obj_regexp.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHCoT5HVYTphBr923Hmg8JpIXlRTg">http://www.w3schools.com/jsref/jsref_obj_regexp.asp</a></span><span class="c1"> &ldquo;var txt=/pattern/modifiers;&rdquo; - Assigning an regex object to a variable named txt is quite confusing. Also weren&rsquo;t octals removed for escape sequences in ES5? Also also, no mention of non-capturing submatches.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fw3schools.com%2Ftcpip%2Ftcpip_addressing.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGtra4yP4iH-jmrAw2iWWV5SwumhA">http://w3schools.com/tcpip/tcpip_addressing.asp</a></span></p><p class="c3"><span class="c1">&ldquo;TCP/IP uses 4 computer bytes&rdquo; - unlike the other sort of bytes? Furthermore, addressing has nothing to do with TCP. It happens on the OSI network layer; this information is very specific to IPv4 and is going to be increasingly obsolete as time goes on.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2FJS%2Fjs_obj_array.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGBHzD8cmXqzjA65Hul0drY0KDtgA">http://www.w3schools.com/JS/js_obj_array.asp</a></span><span class="c1"> It lists &ldquo;new Array()&rdquo; as the way to create an array. The problem is that this is the </span><span class="c1 c15">old way</span><span class="c1"> </span><span class="c1">(not a big deal)</span><sup><a href="#cmnt13" name="cmnt_ref13">[m]</a></sup><span class="c1">. The </span><span class="c1 c15">new way</span><span class="c1"> &ldquo;[]&rdquo; is shorter and </span><span class="c1">it makes you look cool</span><sup><a href="#cmnt14" name="cmnt_ref14">[n]</a></sup><span class="c1">.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fhtml5%2Fhtml5_form_input_types.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFwfxCswyGRm8LuXX9HNPHMAhDHtA">http://www.w3schools.com/html5/html5_form_input_types.asp</a></span><span class="c1"> The support for type=color and type=search is wrong for Opera, those were added in version 11</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">General disclaimer in the footer: &nbsp;&ldquo;We do not warrant the correctness of its content. The risk from using it lies entirely with the user.&rdquo; Tyhe dotn&rsquo; eevnhu trst teoir wn crap.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fjs%2Fjs_form_validation.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNENSW4oCnYN-3ru5tlwzBfBRP9E8g">http://www.w3schools.com/js/js_form_validation.asp</a></span><span class="c1"> Use of generally discouraged with(), use of global variables, use of JavaScript in html attribute (onsubmit=..) etc. Very last century. &nbsp;Also, the if could be simplified to simply if (!value) - in its current form, it&rsquo;s likely to perpetuate some of the misunderstandings people tend to have about JS.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fjsref%2Fdom_obj_event.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNF9hQ1i5U6W4FNnujG2ii1DCRfLuw">http://www.w3schools.com/jsref/dom_obj_event.asp</a></span><span class="c1"> Doesn&rsquo;t mention the essential preventDefault() and stopPropagation().</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2FJS%2Fjs_howto.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFTtvBHDPXhd2ohwRlAoGXY1tKodA">http://www.w3schools.com/JS/js_howto.asp</a></span><span class="c1"> &ldquo;The document.write command is a standard JavaScript command for writing output to a page&rdquo; &ndash; this is on the second section and they never explain the danger of using document.write (see: all of the Awful Examples below).</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fjs%2Fjs_obj_date.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNE2pRk1bcmyIR1jPJhkH0L91QkOrw">http://www.w3schools.com/js/js_obj_date.asp</a></span><span class="c1"> &ldquo;Use getTime() to calculate the years since 1970.&rdquo; UM, NO? Wrong? Very wrong?! Yes, it is wrong. Not &lsquo;years&rsquo; but &lsquo;milliseconds&rsquo;</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fjs%2Fjs_image_maps.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGFo-ZYMeG62IRGtEsNoFJl3gA06Q">http://www.w3schools.com/js/js_image_maps.asp</a></span><span class="c1"> what in the world does this have to do with javascript?</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fjs%2Fjs_animation.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHOmXXw3sEKzBLCXGaUsdYzwu66ow">http://www.w3schools.com/js/js_animation.asp</a></span><span class="c1"> </span><span class="c1">this is not animation</span><sup><a href="#cmnt15" name="cmnt_ref15">[o]</a></sup><span class="c1">. this is not even something that you should be using JS for. ever.</span></p><p class="c3"><span class="c1">&nbsp;</span></p>
<p class="c3"><a href="http://w3schools.com/browsers/browsers_explorer.asp ">http://w3schools.com/browsers/browsers_explorer.asp</a> and <a href="http://w3schools.com/browsers/browsers_stats.asp">http://w3schools.com/browsers/browsers_stats.asp</a> These facts indicate that the browser figures above are not 100% realistic. Other web sites have statistics showing that Internet Explorer is used by at least 80% of the users.</p>
<p>&nbsp;</p>
<p class="c3"><span class="c0">Awful Examples: </span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">Almost every JS example uses document.write (doesn&rsquo;t MDC have this too on rare occasion?)</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fjsref%2Ftryit.asp%3Ffilename%3Dtryjsref_str_style&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNG1iQl239_ctFEyvwk73tCliTxi-g">http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_str_style</a></span><span class="c1"> oh my god. this is so, so, so so so disgusting. aren&rsquo;t these originally JScript extensions to ES3? And it&rsquo;s the SECOND example they link to on their JS String object page at </span><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fjs%2Fjs_obj_string.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGZvbAao9UObuo5MfKaUj0NmclJLg">http://www.w3schools.com/js/js_obj_string.asp</a></span><span class="c1"> :(:(:(</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fjs%2Ftryit.asp%3Ffilename%3Dtryjs_formattext&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNE1wbd4LaXva7wV97gv8dqYIJPe4Q">http://www.w3schools.com/js/tryit.asp?filename=tryjs_formattext</a></span><span class="c1"> so </span><span class="c1 c15">that&rsquo;s</span><span class="c1"> how you add elements to the document!</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fjs%2Ftryit.asp%3Ffilename%3Dtryjs_functionarg2&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFguTLL-GAh22QfrVxINSgAtzmRfA">http://www.w3schools.com/js/tryit.asp?filename=tryjs_functionarg2</a></span><span class="c1"> encouraging in-line function calls?</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fjs%2Ftryit.asp%3Ffilename%3Dtryjs_timing2&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFtkYj1V3n8cAhvTdi02vtF5uUmpQ">http://www.w3schools.com/js/tryit.asp?filename=tryjs_timing2</a></span><span class="c1"> more eval goodness. And under the &ldquo;Advanced Examples&rdquo; section, of course.</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fjs%2Ftryit.asp%3Ffilename%3Dtryjs_create_object2&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHTYp--Ze62BCGOqAT6phjpIysKfQ">http://www.w3schools.com/js/tryit.asp?filename=tryjs_create_object2</a></span><span class="c1"> - so </span><span class="c1 c15">that&#39;s</span><span class="c1"> how templating works. </span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fjs%2Ftryit.asp%3Ffilename%3Dtryjs_while&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHvBbR_0nrA-nVqDXfgMP_dIhzSGg">http://www.w3schools.com/js/tryit.asp?filename=tryjs_while</a></span><span class="c1"> Lets advocate document.write as a good practise to use in while loops.. (and everywhere else)</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fjs%2Ftryit.asp%3Ffilename%3Dtryjs_array_for_in&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNEz2RWXcMgZCcxCyUesTpKvUDa0OQ">http://www.w3schools.com/js/tryit.asp?filename=tryjs_array_for_in</a></span><span class="c1"> - more advocating for-in loops for arrays</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fjs%2Ftryit.asp%3Ffilename%3Dtryjs_fornext&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHZkdhGDE6xIF1Wahn1tKh6cyGydw">http://www.w3schools.com/js/tryit.asp?filename=tryjs_fornext</a></span><span class="c1"> and </span><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fjs%2Ftryit.asp%3Ffilename%3Dtryjs_fornext_header&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHLUfuYg_nhoIbLVHY1wFeEIf4g0w">http://www.w3schools.com/js/tryit.asp?filename=tryjs_fornext_header</a></span><span class="c1"> - Bad examples. The &ldquo;i&rdquo; variable results in a global variable.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fjs%2Ftryit.asp%3Ffilename%3Dtryjs_while&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHvBbR_0nrA-nVqDXfgMP_dIhzSGg">http://www.w3schools.com/js/tryit.asp?filename=tryjs_while</a></span><span class="c1"> and </span><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fjs%2Ftryit.asp%3Ffilename%3Dtryjs_dowhile&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGuqrh43hCTFt2zp7lFPSHLxLM-7A">http://www.w3schools.com/js/tryit.asp?filename=tryjs_dowhile</a></span><span class="c1"> var statement missing in example.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fw3schools.com%2Fhtml%2Fdefault.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHgTfNnl1oTU5YwjXekevjJf-adwA">http://w3schools.com/html/default.asp</a></span><span class="c1"> this is the very first example they provide and it is not a valid document.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fjs%2Ftryit.asp%3Ffilename%3Dtryjs_onerror&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHCokOhzakJU6fabsY9tTVhqR3DXQ">http://www.w3schools.com/js/tryit.asp?filename=tryjs_onerror</a></span><span class="c1"> I&rsquo;ve never known about adddlert(); method before ;-) Typo...</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fw3schools.com%2Fjs%2Fdefault.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHvwLOWFtHGbXtl8ucccDaLrnrqeA">http://w3schools.com/js/default.asp</a></span><span class="c1"> the first JS example uses document.write :( Turns out </span><span class="c0">many </span><span class="c1">examples use document.write :-|</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fw3schools.com%2Fhtml%2Fhtml_getstarted.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHENGCV_Zw-20w2lo9hXXn6-0bMKA">http://w3schools.com/html/html_getstarted.asp</a></span><span class="c1"> - &ldquo;professional web developers often prefer HTML editors like FrontPage or Dreamweaver, instead of writing plain text.&rdquo; </span></p><p class="c3"><span class="c1">WHAT?Incredible.They&rsquo;ve got paid to say this?</span></p><p class="c3"><span class="c1">AAAAAAAAAAAAAAAAAAAAAHHHHHHHHHHHHHHHHHHHHHH </span><span class="c25">Z&#870;&#849;&#781;&#781;&#850;&#872;&#794;&#819;&#851;&#852;&#854;A&#787;&#774;&#834;&#838;L&#773;&#798;&#827;&#790;&#852;&#812;&#810;G&#780;&#848;&#772;&#816;&#819;O&#813;&#809;&#791;!&#873;&#787;&#850;&#869;&#848;&#867;&#836;&#805;&#812;&#841;</span><span class="c1"> &nbsp;:O</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fw3schools.com%2Fhtml%2Fhtml_elements.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHDLtppkLqgEOGORuC_svw9-N22Ag">http://w3schools.com/html/html_elements.asp</a></span><span class="c1"> - &ldquo;Even if &lt;br&gt; works in all browsers, writing &lt;br /&gt; instead is more future proof.&rdquo; Bullshit. I wouldn&rsquo;t expect them to know how the html parser works, but don&rsquo;t advocate so blindly.</span></p><p class="c3"><span class="c1">also, </span><span class="c1">&lt;br /&gt; isn&rsquo;t semantic, so just don&rsquo;t use it</span><sup><a href="#cmnt16" name="cmnt_ref16">[p]</a></sup><span class="c1">.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fhtml5%2Ftag_input.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGUQ1eU-OhKVO7LFrE_CMs9I6rxSg">http://www.w3schools.com/html5/tag_input.asp</a></span><span class="c1"> XHTML syntax in example. Do we want that in HTML5 examples?</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fw3schools.com%2Fhtml%2Fhtml_styles.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNH44UcdYErv9RiVDWEg8cDSmEuZgQ">http://w3schools.com/html/html_styles.asp</a></span><span class="c1"> - advocates using inline styles like crazy, saying that they are the recommended way to style things. true compared to &lt;font&gt;; not true in general</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fw3schools.com%2Fhtml%2Fhtml_links.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNEsnZIHhGEQV1YtDWW_8q3Z-Paa-w">http://w3schools.com/html/html_links.asp</a></span><span class="c1"> - uses the deprecated named anchor (name attribute) instead of element id</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Ftags%2Ftag_font_style.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFwNyW1g5v_a4oCXQaydrXqWmBPKw">http://www.w3schools.com/tags/tag_font_style.asp</a></span><span class="c1"> - &lt;b&gt;, &lt;i&gt;, &lt;small&gt; and &lt;big&gt; tags are mentioned as ways to format text. Not exactly wrong I guess, but could be better. So, sorta awful for a school :/</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fw3schools.com%2Fhtml%2Fhtml_tables.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHHCVvwQOfYoKLOECvFG6KV_VM7wQ">http://w3schools.com/html/html_tables.asp</a></span><span class="c1"> - pages ago they recommended to use CSS, but suddenly they are back to using ancient attributes to set border width. they also claim &ldquo;The text in a th element will be bold and centered.&rdquo; which it does not even do on their site, this also depends on the browsers default stylesheet.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fw3schools.com%2Fhtml%2Fhtml_forms.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNF2-QcL61-jUWLJDwnciTpn91F7fQ">http://w3schools.com/html/html_forms.asp</a></span><span class="c1"> - non-block-level elements directly inside form tag is not valid (until html5)</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fw3schools.com%2Fhtml%2Fhtml_frames.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNE-enzr-wK-LMqyAwxzc79HUGfygg">http://w3schools.com/html/html_frames.asp</a></span><span class="c1"> - nuff said.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fw3schools.com%2Fhtml%2Fhtml_colors.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGBl8oxt20cjHbO16ozsJx06Krv9A">http://w3schools.com/html/html_colors.asp</a></span><span class="c1"> </span><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fw3schools.com%2Fhtml%2Fhtml_colornames.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGX1o6dmSl4FzdrmCNn0CTN92Jmdw">http://w3schools.com/html/html_colornames.asp</a></span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fw3schools.com%2Fhtml%2Fhtml_colorvalues.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFogshBo9geJVzpv-TtmCJWs95L5w">http://w3schools.com/html/html_colorvalues.asp</a></span><span class="c1"> - this is all css stuff at this point. why is it in the html section?</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fw3schools.com%2Fhtml%2Fhtml_whyusehtml4.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGHNBof3zVWq25KCQ93UHT9moxnvw">http://w3schools.com/html/html_whyusehtml4.asp</a></span><span class="c1"> - OH MY GOD, A FUCKING DOCTYPE!!!</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fw3schools.com%2Fhtml%2Fhtml_head.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNEwn9tv1i0kjwiE_8yg_Tk3ieD5vA">http://w3schools.com/html/html_head.asp</a></span><span class="c1"> - their minimum document example keeps changing. suddenly it has a &lt;head&gt; and &lt;title&gt; here. before it had only &lt;html&gt; and &lt;body&gt;.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fw3schools.com%2Fhtml%2Fhtml_scripts.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFqU_1CBZugyPGaGNgBZFzn08oCcA">http://w3schools.com/html/html_scripts.asp</a></span><span class="c1"> - &ldquo;required type attribute&rdquo;</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fw3schools.com%2Fhtml%2Fhtml_url.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGmAnjFroGWg81Jj4x6HFYJpZZK3A">http://w3schools.com/html/html_url.asp</a></span><span class="c1"> - o noes! &ldquo;hackers&rdquo; can &ldquo;see&rdquo; stuff! also, since when are gopher, wais, and news &ldquo;common&rdquo; schemes?</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fw3schools.com%2Fhtml%2Fhtml_urlencode.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFC9e8Q6Ag4FhhyifITqSAXeQjVLg">http://w3schools.com/html/html_urlencode.asp</a></span><span class="c1"> - URL encodings are not ISO-8859-1; they can be whatever you want</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fw3schools.com%2Fhtml%2Fhtml_webserver.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNF69Nhe-lC6ISYnzBzpKHXTOJO8lg">http://w3schools.com/html/html_webserver.asp</a></span><span class="c1"> - IIS or PWS? are you kidding me? How about XAMPP *at least*? And how irresponsible is it to tell people how to create a web server for themselves like this as part of the HTML tutorial?</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fsvg%2Fsvg_inhtml.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNEYqUuGNA9VE_NlksHAJwWTjP2TmA">http://www.w3schools.com/svg/svg_inhtml.asp</a></span><span class="c1"> - I Wish... this page would be updated to show an example of SVG in HTML5</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fsvg%2Fsvg_examples.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNH-622qZtjqjscxVkR9v8NTxHVrWw">http://www.w3schools.com/svg/svg_examples.asp</a></span><span class="c1"> - It&rsquo;s bad advice to suggest using the Adobe SVG Viewer for browser that don&rsquo;t support SVG. It&rsquo;s unmaintained and I think it doesn&rsquo;t even work on Windows 7. &nbsp;Better is to suggest the use of SVGWeb. As for the examples linked to from that page, there&rsquo;s no good reason to refer to the SVG DTD. Who knows why that have standalone=&rdquo;no&rdquo; in the XML declaration when the document has no external references. Putting version=&rdquo;1.1&rdquo; on the root is kinda useless too.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fsvg%2Fsvg_filters_intro.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHA-VWyXsRPCFwG560q2iz00ywRKA">http://www.w3schools.com/svg/svg_filters_intro.asp</a></span><span class="c1"> - What an exceptionally useful page... The &ldquo;tip&rdquo; that you can use multiple filters on an element is kind of misleading, if you happened to know how to write filters (because that list of elements sure doesn&rsquo;t help you): an element can have only one filter, but that filter might use multiple filter primitives to define its effect. The three lighting elements feDistantLight, fePointLight and feSpotLight aren&rsquo;t even filters primitives -- they&rsquo;re just helper elements for the two lighting primitives feDiffuseLighting and feSpecularLighting.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fsvg%2Fsvg_filters_gaussian.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNEk1pKPp2sduvL_PtBDAnxFlbLTug">http://www.w3schools.com/svg/svg_filters_gaussian.asp</a></span><span class="c1"> - The sentence talking about the id attribute on the &lt;filter&gt; is confused. &lt;filter&gt; need not be nested in a &lt;defs&gt;. The description of &lt;defs&gt; is pretty weak.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fsvg%2Fsvg_grad_linear.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNE_vUu5IKu5Cj12GfFSTowLac-7sA">http://www.w3schools.com/svg/svg_grad_linear.asp</a></span><span class="c1"> - Again, there&rsquo;s no requirement for gradients to be defined within a &lt;defs&gt;. </span></p><p class="c3"><span class="c1">hi :)</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fjsref%2Fmet_win_setinterval.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGheOxXPFcWXDoERkFVRMFvTRoHbA">http://www.w3schools.com/jsref/met_win_setinterval.asp</a></span><span class="c1"> - No warning about what happens when the callback takes longer than the given interval.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fhtml5%2Fhtml5_audio.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFb5gFHCXO9ouzQMEI-fZJrTg2CYQ">http://www.w3schools.com/html5/html5_audio.asp</a></span><span class="c1"> and </span><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fhtml5%2Fhtml5_video.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFBi9R7tu3zlRhgxLqmJzOgxUVg6g">http://www.w3schools.com/html5/html5_video.asp</a></span><span class="c1"> controls attribute are an boolean attribute. If attribute is present it similar to true, it its not present its similar to false. So </span><span class="c1">its not &lt;audio controls=&quot;controls&quot;&gt;, its just &lt;audio controls&gt;</span><sup><a href="#cmnt17" name="cmnt_ref17">[q]</a></sup><span class="c1">.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fhtml5%2Fhtml5_audio.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFb5gFHCXO9ouzQMEI-fZJrTg2CYQ">http://www.w3schools.com/html5/html5_audio.asp</a></span><span class="c1"> and </span><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fhtml5%2Fhtml5_video.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFBi9R7tu3zlRhgxLqmJzOgxUVg6g">http://www.w3schools.com/html5/html5_video.asp</a></span><span class="c1"> There is no reference to JavaScript API&rsquo;s those elements have.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fhtml5%2Fhtml5_video.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFBi9R7tu3zlRhgxLqmJzOgxUVg6g">http://www.w3schools.com/html5/html5_video.asp</a></span><span class="c1"> is missing webm in codec matrix. Several attributes are also missing.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fjs%2Ftryit.asp%3Ffilename%3Dtryjs_animation&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNG-1ccT-YOgkt1nChnFTL1WeNkLOQ">http://www.w3schools.com/js/tryit.asp?filename=tryjs_animation</a></span><span class="c1"> Bad &quot;animation&quot; example. Whole example could be done in CSS.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fhtml5%2Fdefault.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNErl34p9iVYG65udtOpHVGVY4VEhg">http://www.w3schools.com/html5/default.asp</a></span><span class="c1"> states &ldquo;At W3Schools you will find complete references about tags, standard attributes, standard events, and more.&rdquo; This is not true. A lot of attributes, standard events and more are missing.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">I can not find any documentation on setting character set for HTML5. Only reference I find is this one: </span><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fhtml5%2Ftag_meta.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFmdC0MlLFvpbbCKDkih6_N-GycXA">http://www.w3schools.com/html5/tag_meta.asp</a></span><span class="c1"> It sets the charset to iso-8859-1. By now utf-8 should be what developers should use.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fvbscript%2Fvbscript_intro.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFoBxcJF4A9gfdi2mkMB3nZRRmUcg">http://www.w3schools.com/vbscript/vbscript_intro.asp</a></span><span class="c1"> They teach VBScript and state: &ldquo;When a VBScript is inserted into an HTML document, the Internet browser will read the HTML and interpret the VBScript.&rdquo;. It implies it will work in all browsers. The doc says nothing about VB being a proprietary language. </span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c0">Quizzes</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">HTML quiz fails </span><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fw3schools.com%2Fquiztest%2Fquiztest.asp%3Fqtest%3DHTML&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNG50epWzmgq4u9ORLTP40J4eZ1rzg">http://w3schools.com/quiztest/quiztest.asp?qtest=HTML</a></span><span class="c1"> </span></p><p class="c3"><span class="c1">Question 1: </span><span class="c1">WHO CARES</span><sup><a href="#cmnt18" name="cmnt_ref18">[r]</a></sup><span class="c1"> WHAT IT STANDS FOR? HOW DOES THAT HELP YOU USE HTML?</span></p><p class="c3"><span class="c1">Question 4: Actually, correct HTML is &lt;br&gt;, correct XHTML is &lt;br /&gt;</span></p><p class="c3"><span class="c1">Question 5: Well, &ldquo;correct&rdquo; is probably the wrong word here. Would prefer to suggest CSS answer.</span></p><p class="c3"><span class="c1">Question 6: Bold? B? Really!?</span></p><p class="c3"><span class="c1">Question 7: Italic? I? Really!?</span></p><p class="c3"><span class="c1">Question 10: In strict doctypes, target attribute is bad.</span></p><p class="c3"><span class="c1">Question 11: &ldquo;All&rdquo; table tags? What about all the other ones?</span></p><p class="c3"><span class="c1">Question 12: &ldquo;correct&rdquo; answer is to use an align attribute after explicitly telling people not to use it earlier in their html section</span></p><p class="c3"><span class="c1">Question 19: Missing alt attribute.</span></p><p class="c3"><span class="c1">Question 20: same thing as q12, advocates using background attribute of &lt;body&gt;</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">XHTML quiz fails</span><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fw3schools.com%2Fquiztest%2Fquiztest.asp%3Fqtest%3DXHTML&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNF2UPufGUzjf7bTPRuRL2eUBiPRFQ"> http://w3schools.com/quiztest/quiztest.asp?qtest=XHTML</a></span></p><p class="c3"><span class="c1">Question 1: Same as HTML quiz</span></p><p class="c3"><span class="c1">Question 14: Presumably the examples that do not use the lang attribute are not using the lang attribute correctly.</span></p><p class="c3"><span class="c1">Question 18: What are the XHTML doctypes? WHO CARES?</span></p><p class="c3"><span class="c1">Question 19: Which is the most common XHTML doctype? WHO FUCKING CARES?</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">CSS quiz fails </span><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fw3schools.com%2Fquiztest%2Fquiztest.asp%3Fqtest%3DCSS&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGB9WMdqp5ZgPNwI_LX3HqjOIR2PA">http://w3schools.com/quiztest/quiztest.asp?qtest=CSS</a></span></p><p class="c3"><span class="c1">Question 1: Same as HTML quiz</span></p><p class="c3"><span class="c1">Question 2: Oh, now suddenly we are using HTML-flavour HTML instead of XHTML</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">JavaScript quiz fails </span><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fquiztest%2Fquiztest.asp%3Fqtest%3DJavaScript&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHb3atWG_OA5K0sG-0EbonEwC9TXw">http://www.w3schools.com/quiztest/quiztest.asp?qtest=JavaScript:</a></span></p><p class="c3"><span class="c1">Question 2: Not mentioning document.createElement or .innerHTML as correct syntax to write &ldquo;hello world&rdquo;. document.write is always the wrong answer, except in one case, which this is not.</span></p><p class="c3"><span class="c1">Question 3: Advertising script placements in the head tags are correct.. Why?</span></p><p class="c3"><span class="c1">Question 7: missing var name = function(){}, anonymous functions and closures</span></p><p class="c3"><span class="c1">Question 9/10: using == instead of </span><span class="c1">===</span><sup><a href="#cmnt19" name="cmnt_ref19">[s]</a></sup><span class="c1"> </span></p><p class="c3"><span class="c1">Question 13/14: Glad we spent two whole questions going over the ways that one can comment text in JS. </span><span class="c1">I can rest easy knowing that my JS devs will be able to write multi-line comments now.</span><sup><a href="#cmnt20" name="cmnt_ref20">[t]</a></sup></p><p class="c3"><span class="c1">Question 15: using new Array instead of [].</span></p><p class="c3"><span class="c1">Question 18: Pop-up windows? Really? Let&rsquo;s not talk about how falsy values work, </span><span class="c1">let&rsquo;s ask how to open a WINDOW</span><sup><a href="#cmnt21" name="cmnt_ref21">[u]</a></sup><span class="c1">. :\</span></p><p class="c3"><span class="c1">Question 19: Not technically wrong, but a lot of browsers don&rsquo;t let you change the status text or don&rsquo;t have a status bar, so setting window.status has no effect anyway.</span></p><p class="c3"><span class="c1">Question 20: using navigator.appName doesn&rsquo;t work cross browser... For example it gives navigator in Google Chrome, and is also a </span><span class="c1">worthless</span><sup><a href="#cmnt22" name="cmnt_ref22">[v]</a></sup><span class="c1"> thing to ask anyway</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">jQuery quiz fails </span><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fw3schools.com%2Fquiztest%2Fquiztest.asp%3Fqtest%3DjQuery&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHFl6owEt6KH-2tcSUpsG4MyBWS8Q">http://w3schools.com/quiztest/quiztest.asp?qtest=jQuery</a></span><span class="c1"> </span></p><p class="c3"><span class="c1">Question 2: jQuery used to have XPath selectors, but does not now. WHERE&rsquo;S THAT OPTION, W3SCHOOLS? The answer is FALSE, but they think the answer is TRUE.</span></p><p class="c3"><span class="c1">Question 5: jQuery can be used on the client or the server.</span></p><p class="c3"><span class="c1">Question 16: None of those are jQuery functions</span></p><p class="c3"><span class="c1">Question 19: That selector is fucking stupid, and none of the answers are correct</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fjs%2Fjs_variables.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFY5n2x5cfz9bLl7CeQYB_s1m5muQ">http://www.w3schools.com/js/js_variables.asp</a></span><span class="c1"> Claims that `x = &hellip;` and `var x = &hellip;` are the &ldquo;same&rdquo;. They are obviously not </span><span class="c2"><a href="">(http://goo.gl/rXrY7);</a></span><span class="c1"> on that note, W3C doesn&rsquo;t mention variable scoping at all...</span></p><p class="c3"><span class="c1">this page is even worse, it actually goes out of its way to demonstrate that redeclaring an already-declared variable is safe. People shouldn&rsquo;t be doing this! You shouldn&rsquo;t be mentioning it like it&rsquo;s OK!</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fw3schools.com%2Fajax%2Fajax_xmlhttprequest_create.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHXkFSjhkMFZQ7NegYuhw9M26k3-Q">http://w3schools.com/ajax/ajax_xmlhttprequest_create.asp</a></span><span class="c1"> - beginners would probably copy and paste the code which lacks var statements and would add evil globals. </span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fhtml5%2Ftag_details.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHTN39d5eZ4V5gnR5Jw8XXLx6XCNQ">http://www.w3schools.com/html5/tag_details.asp</a></span><span class="c1"> The docs on the HTML5 &lt;details&gt; element is written to make it sound like its a document-level metadata tag, when in fact its meant to hide and show further details of inline content. The page isn&rsquo;t written very well.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3 c28"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fjs%2Fjs_events.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFxKnYx8foAuSTh0v4UovyjO5u6lg">http://www.w3schools.com/js/js_events.asp</a></span><span class="c1"> - encouraging the use of inline event handlers. &nbsp;the wise bot-t once said, &ldquo;</span><span class="c1 c15">Inline handlers are harder to debug, aren&#39;t reusable, are harder to maintain, bloat your HTML, and violate the separation of content design principle. Also - jQuery can&#39;t normalize your event, leaving you unsure if you can reliably stopPropagation(), or access e.which</span><span class="c1">.&rdquo; Also no mention of event bubbling or stopPropagation.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fw3schools.com%2Fphp%2Fphp_mysql_insert.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHuxvvOIkhU1T7XPJaPDrwjowY-sQ">http://w3schools.com/php/php_mysql_insert.asp</a></span><span class="c1"> I imagine there are over 9000 errors in their PHP stuff, but I knew I would find this very easily if I looked. WHAT&rsquo;S UP TRIVIAL SQL INJECTION EXAMPLE? NICE TO SEE YOU. [to be deleted? </span><span class="c1">this list is about JavaScript</span><sup><a href="#cmnt23" name="cmnt_ref23">[w]</a></sup><span class="c1"> - or is it? lots of markup and styling here as well] </span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fw3schools.com%2Fjs%2Fjs_special_characters.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFa62Il_glJLhwGOvyuVThL5iqblQ">http://w3schools.com/js/js_special_characters.asp</a></span><span class="c1"> - that&rsquo;s weird, I am *pretty* sure that ampersands are not characters that need to be </span><span class="c1">escaped</span><sup><a href="#cmnt24" name="cmnt_ref24">[x]</a></sup><span class="c1"> in JS strings, but maybe I have been doing it wrong this whole time!?!? Maybe they meant that it is an HTML special character, so</span><span class="c1"> using it in JS blocks inside the HTML document can cause problems</span><sup><a href="#cmnt25" name="cmnt_ref25">[y]</a></sup><span class="c1">.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fjs%2Fjs_throw.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFwfcKLVoqMXk4kf41JelLZrPLFww">http://www.w3schools.com/js/js_throw.asp</a></span><span class="c1"> - throw is not a function, it is a language construct, so why does their example treat it like one? :(</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">THIS IS </span><span class="c0 c23 c15">EVIL</span><span class="c1">:</span><span class="c1"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fcert%2Fdefault.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHUGzoBkSWjd6sz6cwdPxRa9SDZnw"> </a></span><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fcert%2Fdefault.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHUGzoBkSWjd6sz6cwdPxRa9SDZnw">http://www.w3schools.com/cert/default.asp</a></span><span class="c1"> ($95 is a lot of money in many parts of the world) &gt;:|</span></p><p class="c3"><span class="c1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Let&rsquo;s explain a little bit here on WHY this is evil. &nbsp;The value of said certifications in jobs/universities, etc. -There is no value. They are not accredited or recognised by anyone anywhere. CompTIA certs are worthless too, but at least they have a semi-legitimate non-profit organisation behind them, whereas w3schools is just some company trying to take your money.</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fcert%2Fdefault.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHUGzoBkSWjd6sz6cwdPxRa9SDZnw">&nbsp;</a></span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fcert%2Fdefault.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHUGzoBkSWjd6sz6cwdPxRa9SDZnw">&nbsp;</a></span></p><p class="c3"><span class="c1">FWIW - their (dis)connection to w3c</span></p><p class="c3"><span class="c1">- I&rsquo;ve (Paul Irish) talked to the W3C to ask them to disavow a connection (since everyone thinks they are related) </span></p><p class="c3"><span class="c1"> &nbsp;- w3c has asked them, in fact.</span></p><p class="c3"><span class="c1"> &nbsp;- they are not interested in stating for a fact that they are not connected to the W3C </span></p><p class="c3"><span class="c1"> &nbsp;- so that&rsquo;s kinda the end of that.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">Is it? Deceptive business practices are illegal, even in Norway (where Refsnes Data, the owner of w3schools reside).</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c10">Design Notes</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">should we break this into sections? html, css, js, jquery, etc</span><span class="c1">.</span><sup><a href="#cmnt26" name="cmnt_ref26">[z]</a></sup></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">We might get some basic PageRank out of this so maybe we&rsquo;ll do some promoteJS style linking to MDC. e.g. for like the word &ldquo;Array&rdquo; and shit we&rsquo;ll just link straight to MDC for all that. &nbsp;Boomboom.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">It&rsquo;d be fun to keep the ever-so-fun language of this document. </span></p><p class="c7"><span class="c1">Re-writing this would delete all we did.</span></p><p class="c7"><span class="c1">Yah. &ldquo;Below is some aggregate research and notes from the collective JavaScript community. Mature language. You&rsquo;ve been warned...&rdquo; might do the trick.</span></p><p class="c7"><span class="c1">It will, this document indeed gives its best for its language.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">Keep the hyperlinks to w3schools just like they are here.. never using anchor text.. but linked. (</span><span class="c1">with </span><span class="c0">rel=nofollow</span><sup><a href="#cmnt27" name="cmnt_ref27">[aa]</a></sup><span class="c1">) because we DONT want them getting any SEO benefit out of this. &nbsp;</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fw3schools.com%2Fabout%2Fabout_copyright.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNEcWAQFwDjrwjMWTovdPAwmXgsKYA">http://w3schools.com/about/about_copyright.asp</a></span><span class="c1"> says &ldquo;Pages, code or other content from W3Schools may not be redistributed or reproduced in any way, shape, or form without the written permission of Refsnes Data.&rdquo; (interestingly, </span><span class="c1">I&rsquo;m breaking their TOS by posting that here)</span><sup><a href="#cmnt28" name="cmnt_ref28">[ab]</a></sup><span class="c1">. That&rsquo;s probably not good, though I&rsquo;m sure this commentary is protected under fair use in a lot of places</span><span class="c1">.</span><sup><a href="#cmnt29" name="cmnt_ref29">[ac]</a></sup><span class="c1"> </span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">We might rip off their design.. </span><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2F&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGKQuxy7D6Vc9sctyj5HMFjQ9hSKg">http://www.w3schools.com/</a></span><span class="c1"> use the left column to link to MDC instead... except for a portion at the Top of &ldquo;Terrible JS Reference&rdquo; that goes back to w3schools proper. Maybe.. :)</span></p><p class="c7"><span class="c1">The only thing i don&rsquo;t wanna see anymore is their &lsquo;educate yourself&rsquo;.</span></p><p class="c7"><span class="c1">How about &ldquo;Educate yo&rsquo;self, fool!&rdquo; ?</span></p><p class="c7"><span class="c1">Great.Make it link back to them once done(@rel=nofollow Obviously)</span></p><p class="c7"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">Alex Russell reminds me I should make sure this doesn&rsquo;t look like it&rsquo;s coming from Google proper. :) Good call. Let&rsquo;s keep that in mind. &nbsp;I think signing off on something as &ldquo;Thanks, the JavaScript community&rdquo; would be good enough.</span></p><p class="c7"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c21 c26">Off-topic..</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">So I&rsquo;m looking at twitter search for w3schools to see where this link has gone.. but once i scroll past all the tweets referencing it.... i hit shit like...</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">&ldquo;</span><span class="c13">so impressed with the online web development tutorials out there. my favourite so far is </span><span class="c19"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2F&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGKQuxy7D6Vc9sctyj5HMFjQ9hSKg">http://www.</a></span><span class="c19 c21"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2F&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGKQuxy7D6Vc9sctyj5HMFjQ9hSKg">w3schools</a></span><span class="c19"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2F&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGKQuxy7D6Vc9sctyj5HMFjQ9hSKg">.com/</a></span><span class="c1">&rdquo;</span></p><p class="c3"><span class="c1">&ldquo;</span><span class="c13">Also, you can&#39;t beat </span><span class="c6">w3schools&rdquo;</span></p><p class="c3"><span class="c1">&ldquo;</span><span class="c13">@</span><span class="c19"><a href="http://www.google.com/url?q=http%3A%2F%2Ftwitter.com%2F_lokeshmotwani&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGNVeBfQETr7MI5cZkwMtCAutIFYg">_lokeshmotwani</a></span><span class="c13"> Then u r ready for iOS development and PHP. For web development first learn html and css from </span><span class="c6">w3schools&rdquo;</span></p><p class="c3"><span class="c1">&ldquo;</span><span class="c13">@</span><span class="c19"><a href="http://www.google.com/url?q=http%3A%2F%2Ftwitter.com%2Fheyjudeonline&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGfl9POsitgxQSGKjzZljGlXfWirA">heyjudeonline</a></span><span class="c13"> The best place to start:</span><span class="c19"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fcss%2Fdefault.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNE8r-GNmViUYBs7oTTd6kuOwufAcg">http://www.</a></span><span class="c19 c21"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fcss%2Fdefault.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNE8r-GNmViUYBs7oTTd6kuOwufAcg">w3schools</a></span><span class="c19"><a href="http://www.google.com/url?q=http%3A%2F%2Fwww.w3schools.com%2Fcss%2Fdefault.asp&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNE8r-GNmViUYBs7oTTd6kuOwufAcg">.com/css/default.asp</a></span><span class="c1">&rdquo;</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">:&rsquo;(</span></p><p class="c3"><span class="c1">but then...</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">&ldquo;</span><span class="c13">@</span><span class="c19"><a href="http://www.google.com/url?q=http%3A%2F%2Ftwitter.com%2FmLewisLogic&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGnP4hks6vogowMwlocf4xxAEFOGQ">mLewisLogic</a></span><span class="c13"> Whenever you find </span><span class="c6">w3schools</span><span class="c13"> (which is utter crap), just add &#39;mdc&#39; to your query.&rdquo; &nbsp;HOORAY </span><span class="c2"><a href="http://www.google.com/url?q=https%3A%2F%2Ftwitter.com%2F%23!%2Fsamuelclay&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNH9ub9y6DAPQYkGY_XHJumpdk29GA">SIR</a></span><span class="c13">!</span></p><p class="c3"><span class="c13">&nbsp;</span></p><p class="c3"><span class="c13">We need a Twitter bot to watch those and suggest MDC, etc. (Can a bot watch links too? I mean shortened ones? such that we can detect people passing wrong advice to each other?)</span></p><p class="c3"><span class="c13">And a Google alert on w3schools to let a task force? go and comment to any &lsquo;comment-able&rsquo; place where w3schools is praised.</span></p><p class="c3"><span class="c13">&nbsp;</span></p><p class="c3"><span class="c13">Will make said bot this weekend...</span><sup><a href="#cmnt30" name="cmnt_ref30">[ad]</a></sup></p><p class="c3"><span class="c13"> &nbsp;^^ awesome. ~paul</span></p><p class="c3"><span class="c22">&nbsp;</span></p><p class="c3"><span class="c1">Their logo kinda looks like a cock and balls. there, I said it.</span></p><p class="c3"><span class="c22">&nbsp;</span></p><p class="c3"><span class="c1">Apparently nobody bought adwords on w3schools, I wonder if we can just advertise MDC when somebody searches for w3schools.</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">I would love if we could make a good informative article on w3schools (other dangerous &amp; outdated places) and have it published in A List Apart. </span></p><p class="c3"><span class="c1"> ^ go right ahead. you got a lot here to get you started. ~paul</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">Can we add a kind of &ldquo;note,&rdquo; suggestion to be displayed by Firebug when someone has a another tab (than the one he&rsquo;s working on some content) opened on w3school, and suggest a proper place? Something simple, discreet (no MS Clippie) &hellip; &ldquo;you might be using outdated and misleading documentation, here&rsquo;s where to find...&rdquo;</span></p><p class="c3"><span class="c1">OTOH can we get things like this in any other web dev tools they might use?</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">Are the forums at </span><span class="c23 c29"><a href="http://www.google.com/url?q=http%3A%2F%2Fw3schools.invisionzone.com%2F&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFWRsL_jxsLAzITuNWI3BLJ1pllsQ">http://w3schools.invisionzone.com/</a></span><span class="c17"> as bad as the site&rsquo;s original content?</span></p><p class="c3"><span class="c17">Should one &ldquo;join&rdquo; the forums and advocate better places for documentation? ~trygve</span></p><div class="c8"><p><a href="#cmnt_ref1" name="cmnt1">[a]</a><span class="c1">What I don&rsquo;t understand is why market forces haven&rsquo;t kicked in here &nbsp;&mdash;jamesgpearce</span></p><hr><p><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">s&rsquo;not so much market forces as SEO power. and they&rsquo;ve beaten specs and the MDC for that.. </span></p><p class="c3"><span class="c1">i talked with the w3c about and and they&rsquo;re like.. &ldquo;We should have a page for every html element.&rdquo; Which.. would indeed help a lot. &mdash;paulirish</span></p><hr><hr><p class="c3"><span class="c1">&nbsp;</span></p><p><span class="c1">I have a feeling it&rsquo;s because it may have been &ldquo;first&rdquo; on google, people link to it more and it gets higher. &nbsp;&mdash;antimatter15</span></p><hr><p><span class="c1">&nbsp;</span></p><p><span class="c1">Now if only we knew someone who worked at Google... &mdash;jamesgpearce</span></p><hr><p><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">Heh. I wish I could simultaneously drop w3schools, kill off the SO clones, and fix all the relevance problems people have had lately.. but alas. &mdash;paulirish</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">+1</span></p><p class="c3"><span class="c1">+100 -- bradneuberg</span></p></div><div class="c8"><p><a href="#cmnt_ref2" name="cmnt2">[b]</a><span class="c1">w3school looks like it was written in 1997; it&rsquo;s just plain fugly and covered with Google AdSense spam widgets. &mdash;bradneuberg</span></p><hr><p><span class="c1">&nbsp;</span></p><p><span class="c1">amen. &mdash;paulirish</span></p><hr><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">on web.archive.org, the w3schools from 2000 has the *exact* same content with less ads :) &mdash;antimatter15</span></p></div><div class="c8"><p><a href="#cmnt_ref3" name="cmnt3">[c]</a><span class="c1">Just as important (maybe), they present incomplete concepts. Some of the transgressions we&rsquo;ve listed might be didactically useful, but w3schools should be explicit in saying to never use them in practice and WHY. As it is now, w3schools is less of a school and more of a collection of shitty code samples and bad practices. &mdash;brianloveswords</span></p><hr><p><span class="c1">&nbsp;</span></p><p><span class="c1">It&rsquo;s hard to know if something is complete - no sites contain complete info about the topic &mdash;scrptn</span></p><hr><p><span class="c1">&nbsp;</span></p><p><span class="c1">That&rsquo;s true, but this is woefully bad. Really, really bad. And as far as no site having complete knowledge, that&rsquo;s what we&rsquo;re here to fix, right? &mdash;brianloveswords</span></p><hr><p><span class="c1">&nbsp;</span></p><p><span class="c1">I&rsquo;d better kill w3schools then fix it ;) &mdash;scrptn</span></p><hr><p><span class="c1">&nbsp;</span></p><p><span class="c1">Oh I don&rsquo;t mean fix w3schools, it&rsquo;s gangrene at this point. It needs to come off. I mean we&rsquo;re fixing js documentation in general. &mdash;brianloveswords</span></p><hr><p><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">Not really &nbsp;;) I&rsquo;m happy w/ documentation I have (not from w3schools) &mdash;scrptn</span></p></div><div class="c8"><p class="c3"><a href="#cmnt_ref4" name="cmnt4">[d]</a><span class="c1">Or place rel=&rdquo;vote-against&rdquo; onto links &mdash;scrptn</span></p></div><div class="c8"><p class="c3"><a href="#cmnt_ref5" name="cmnt5">[e]</a><span class="c1">See Paul&rsquo;s comment up top re: the w3c and a page for each element--it sort of already exists &mdash;miketaylr</span></p></div><div class="c8"><p class="c3"><a href="#cmnt_ref6" name="cmnt6">[f]</a><span class="c1">good idea &mdash;kangax</span></p><hr><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">I concur &mdash;darren.waddell</span></p><hr><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">Screw that; why not just create our own wiki to compete? -- dw</span></p><hr><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fgoodluckwiththatdude.com&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNH5XTbGBsx08_i56fktp2r1el3Hjg">http://goodluckwiththatdude.com</a></span><span class="c1"> &nbsp;&mdash;paulirish</span></p></div><div class="c8"><p><a href="#cmnt_ref7" name="cmnt7">[g]</a><span class="c1">The obvious reply to this is that if they allow us to update their content more of us would be willing to refer to their pages when we&rsquo;re writing articles or pointing newbs in the right direction ie MORE traffic. At the moment they&rsquo;re just gliding by. I don&rsquo;t know..I think their motivation to work with us should be keeping the material correct but obv if they get more traffic thats more clicks/money for them. &mdash;addyosmani</span></p><hr><p><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">Motivation can be simple: better content -&gt; more visitors -&gt; more money. But they&rsquo;re just too lazy &mdash;scrptn</span></p></div><div class="c8"><p class="c3"><a href="#cmnt_ref8" name="cmnt8">[h]</a><span class="c1">Indeed it does &mdash;jamesgpearce</span></p></div><div class="c8"><p class="c3"><a href="#cmnt_ref9" name="cmnt9">[i]</a><span class="c1">w3schools is trolling the internet. &mdash;brianloveswords</span></p></div><div class="c8"><p><a href="#cmnt_ref10" name="cmnt10">[j]</a><span class="c1">Technical ly untrue. \u0076\u0061\u0072=1 is valid and would set var=1 &mdash;sephr</span></p><hr><p><span class="c1">&nbsp;</span></p><p><span class="c1">don&rsquo;t be a pedant. ;) https://developer.mozilla.org/en/JavaScript/Reference/Reserved_Words</span></p><hr><p><span class="c1">&nbsp;</span></p><p><span class="c1">not anymore in ES5 [edit: had nothing to do with ES5 but still correct] &mdash;sephr</span></p><hr><p><span class="c1">&nbsp;</span></p><p><span class="c1">um, ES5 &sect; 7.6.1.1 contradicts that? var is still not a valid identifier, and how could it suddenly not be?</span></p><hr><p><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">I don&rsquo;t think \u0076\u0061\u0072 actually counts as &ldquo;var&rdquo; in that context &mdash;sephr</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">^-- It does [does as in I&rsquo;m right or wrong?] -- as in, \u0076\u0061\u0072 is an invalid identifier ;) [ah ok, what about function::var then? ;)] Mozilla extension? e4x? [yes, but using a namespace from mozilla </span><span class="c2"><a href="">(@mozilla.org/js/function)]</a></span><span class="c1"> ok! [it&rsquo;s sorta the &ldquo;default&rdquo; namespace of every property </span><span class="c2"><a href="">x=&rdquo;@mozilla.org/js/function&rdquo;; document.x::title</a></span><span class="c1"> === document.title; though also an empty namespace works too (x=&rdquo;&rdquo;), but that won&rsquo;t work for direct variables (x::y as opposed to z.x::y) I think maybe this is a bug; oh, and don&rsquo;t get me started with the weird hacks you can get by combining destructuring assignment in arguments, escape sequences, eval, and the function:: namespace (all together); you can do crazy shit with the context]</span></p><p class="c3"><span class="c1">[not really an extension when only mozilla implements JS]. See 7.6 where it clearly states that escape sequences should not constitute reserved words if they were to be replaced with their actual values (see </span><span class="c2"><a href="http://www.google.com/url?q=https%3A%2F%2Fgist.github.com%2F770357&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGaqylbLMI_abIazzl9FZoXxt3PFQ">https://gist.github.com/770357</a></span><span class="c1">). --kangax</span></p><hr><p><span class="c1">&nbsp;</span></p><p><span class="c1">no it doesn&rsquo;t, but they are still not using \u0076\u0061\u0072, they are using &ldquo;var&rdquo;.</span></p><hr><p><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">alright, shall I remove this comment then? &mdash;sephr</span></p><hr><p><span class="c1">&nbsp;</span></p><p><span class="c1">GO FOR IT!!!!!!!!!!!!!!!!!!!! WOOOOO!!!!!!!</span></p><hr><p><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">comment threads are fun! keep it for the lulz. &mdash;paulirish</span></p></div><div class="c8"><p><a href="#cmnt_ref11" name="cmnt11">[k]</a><span class="c1">Who said that? Don&rsquo;t mix facts and opinions, please. Also, Node.js is not the different language &mdash;scrptn</span></p><hr><p><span class="c1">&nbsp;</span></p><p><span class="c1">Well.... ASP definitely doesnt belong, that&rsquo;s for sure. :) &mdash;paulirish</span></p><hr><p><span class="c1">&nbsp;</span></p><p><span class="c1">I&rsquo;m not an ASP programmer, but why not? Why is it bad? &mdash;scrptn</span></p><hr><p><span class="c1">&nbsp;</span></p><p><span class="c1">Because it has not existed for about&hellip;9 years now. It was replaced by C#/ASP.NET (or VB/ASP.NET for people with no brain) in 2002. Actually the last release of ASP was in 2000. 11 years old!!</span></p><hr><p><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">I missed that &mdash;scrptn</span></p></div><div class="c8"><p class="c3"><a href="#cmnt_ref12" name="cmnt12">[l]</a><span class="c1">Actually, JS is more OOP than Java is, because &ldquo;everything is an object&rdquo; - in JS functions are objects, as you know, &mdash;scrptn</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">Should be more like &ldquo;JavaScript is a rich, multi-paradigm language.&rdquo;</span></p><p><span class="c1">&ndash;brianloveswords</span></p><hr><p><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">Yep &mdash;scrptn</span></p></div><div class="c8"><p class="c3"><a href="#cmnt_ref13" name="cmnt13">[m]</a><span class="c1">i have to disagree. it feels like a big deal. :(</span></p><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">Well, to be fair it lists all the ways. It just lists the constructor way first and the literal way last, which should probably be reversed.</span></p><p><span class="c1">&ndash;brianloveswords</span></p><hr><p><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">I feel like they should just not have them listed, but then I guess it would not be a &ldquo;reference&rdquo;. OH WELL. It&rsquo;s not a very good reference anyway since it does not mention that Array(number) will create an empty array of length number.</span></p><hr><p><span class="c1">&nbsp;</span></p><p><span class="c1">Fuck the Array constructor. &mdash;paulirish</span></p><hr><p><span class="c1">&nbsp;</span></p><p><span class="c1">I JUST WANTED TO SAY before you deleted it anyway that it does not really &ldquo;control the length&rdquo;&mdash;it&rsquo;s not like a Java array where it&rsquo;s bound to a particular length when you do that.</span></p><hr><p><span class="c1">&nbsp;</span></p><p><span class="c1">Agreed. :) &mdash;paulirish</span></p><hr><p><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">Yeah it was a &ldquo;not a big deal&rdquo; compared to other massive crap. This one is just a tiny rabbit shit. &nbsp;&mdash;jerem.selier</span></p></div><div class="c8"><p class="c3"><a href="#cmnt_ref14" name="cmnt14">[n]</a><span class="c1">Like Chuck Norris &mdash;scrptn</span></p></div><div class="c8"><p><a href="#cmnt_ref15" name="cmnt15">[o]</a><span class="c1">technically, it is an animation. But... evil animation &mdash;scrptn</span></p><hr><p><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">Yeah, it doesn&rsquo;t use nearly enough document.write() &mdash;brianloveswords</span></p></div><div class="c8"><p><a href="#cmnt_ref16" name="cmnt16">[p]</a><span class="c1">How do non-semantical elements like this can break your semantics? I will use that when it&rsquo;s simple solution, rather than adding more tags and CSS &mdash;scrptn</span></p><hr><p><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">anon 109 agrees. line breaks are cool if you need them, at least until some of the more advanced text wrapping stuff happens. of course, most people don&rsquo;t need them.</span></p></div><div class="c8"><p><a href="#cmnt_ref17" name="cmnt17">[q]</a><span class="c1">polyglot html5 says both are valid. still, w3schools is a little confused in general about the difference between HTML, XHTML, and polyglot HTML5.</span></p><hr><p><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">Mmm... Your right. But; w3c uses only the attribute name in their own examples. Boils down to what we want to teach. &nbsp;&mdash;trygvelie74</span></p></div><div class="c8"><p><a href="#cmnt_ref18" name="cmnt18">[r]</a><span class="c1">&ldquo;Who cares&rdquo; isnt constructive &mdash;dean</span></p><hr><p><span class="c1">&nbsp;</span></p><p><span class="c1">How about, &ldquo;it is totally worthless knowledge that is completely inappropriate when giving a quiz to someone to test their competence level&rdquo;? If you are only going to ask 20 questions, this should *not* be one of them.</span></p><hr><p><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">this isnt about being constructive at the moment. consider it a bit of developer catharsis. &mdash;paulirish</span></p><hr><p class="c3"><span class="c1">&nbsp;</span></p><p><span class="c1">Intro paragraph &amp; tweet are misleading.&mdash;dean</span></p><hr><p><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">deal with it? &mdash;paulirish</span></p><p class="c3"><span class="c1">...done :) &mdash;dean</span></p><hr><p class="c3"><span class="c1">&nbsp;</span></p><p><span class="c1">i can&rsquo;t tell which is more fun, reading this doc, or reading this little side thread. -- getify</span></p><hr><p><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">its a nice happy treat for a friday evening. :D &mdash;paulirish</span></p><hr><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">^-- this is the reminder that I needed: I should be sleeping. 2:30am local time -tiffany</span></p><hr><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">cathartic, yes... got to figure out how to fix it tho&rsquo; &mdash;jamesgpearce</span></p></div><div class="c8"><p><a href="#cmnt_ref19" name="cmnt19">[s]</a><span class="c1">Using === for numbers is excessive, then new Number(32) === 32 is false :(</span></p><hr><p><span class="c1">&nbsp;</span></p><p><span class="c1">why would you ever do new Number(...)? &mdash;sephr</span></p><hr><p><span class="c1">&nbsp;</span></p><p><span class="c1">You never should (unless you learn from w3schools) but using === still has no point. &mdash;antimatter15</span></p><hr><p><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">strict equality is usually faster and avoids incorrect falsy evaluation.</span></p><hr><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">antimatter15 hasn&rsquo;t read JavaScript: The Good Parts :( I believe the main argument Crockford makes is that strict equality is often what people (particularly coming from backend backgrounds) actually expect, when they use ==</span></p><p class="c3"><span class="c1">Well, either that or I&rsquo;m completely misinterpreting the comment too broadly :P</span></p><p class="c3"><span class="c1">Also, IIRC isn&rsquo;t FF currently the oddball in that strict comparison is slower in it?</span></p><p class="c3"><span class="c1">--kfranqueiro</span></p></div><div class="c8"><p class="c3"><a href="#cmnt_ref20" name="cmnt20">[t]</a><span class="c1">Judging by the frequency with which I see inadequately-commented (or not at all) javascript on github, maybe more people actually need to learn this :P &mdash;kfranqueiro</span></p></div><div class="c8"><p class="c3"><a href="#cmnt_ref21" name="cmnt21">[u]</a><span class="c1">Proper ventilation is important! &nbsp;..oh wait &mdash;kfranqueiro</span></p></div><div class="c8"><p><a href="#cmnt_ref22" name="cmnt22">[v]</a><span class="c1">Not just worthless, we should discourage browser detection whenever possible. (I think someone else hit on this elsewhere) &mdash;kfranqueiro</span></p><hr><p><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">probly ya &mdash;paulirish</span></p></div><div class="c8"><p><a href="#cmnt_ref23" name="cmnt23">[w]</a><span class="c1">Primarily, but as paulirish stated above, it&rsquo;s turned into a bitch session about everything that&rsquo;s incorrect or inaccurate in w3schools. There&rsquo;s plenty of CSS and HTML mistakes mentioned. &mdash;ShaneRileyDotInfo</span></p><hr><p><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">Yeah bro it&rsquo;s totally cool. Load it on. &mdash;paulirish</span></p></div><div class="c8"><p class="c3"><a href="#cmnt_ref24" name="cmnt24">[x]</a><span class="c1">Notice they never once use the word &ldquo;escape&rdquo; on that page. This is one of the major problems with w3schools beyond all the nitpicky stuff: they actively shield their readers from ideas and concepts that should be central to what they are learning.</span></p><p class="c3"><span class="c1"> &mdash;brianloveswords</span></p></div><div class="c8"><p><a href="#cmnt_ref25" name="cmnt25">[y]</a><span class="c1">But it can&rsquo;t, because the content of a &lt;script&gt; is CDATA, not PCDATA. The only way to break things once you are in a &lt;script&gt; is to write &lt;/script&gt;.</span></p><hr><p><span class="c1">&nbsp;</span></p><p><span class="c1">Unless you use XHTML &mdash;scrptn</span></p><hr><p><span class="c1">&nbsp;</span></p><p><span class="c1">In which case you wanna wrap that shit manually. Or, really, just don&rsquo;t include inline script. &lt;script&gt;&lt;![CDATA[ ]]&gt;&lt;/script&gt; Either way, \&amp; is not going to escape your XML. If you need to do that, you need to use &amp;amp;.</span></p><hr><p><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">You&rsquo;re right. That should be stated explicitly too &mdash;scrptn</span></p></div><div class="c8"><p class="c3"><a href="#cmnt_ref26" name="cmnt26">[z]</a><span class="c1">sure. &mdash;paulirish</span></p></div><div class="c8"><p class="c3"><a href="#cmnt_ref27" name="cmnt27">[aa]</a><span class="c1">You&rsquo;d better create that links w/ document.write() ;D &mdash;scrptn</span></p></div><div class="c8"><p><a href="#cmnt_ref28" name="cmnt28">[ab]</a><span class="c1">I could be wrong, but technically speaking when you render one of their pages and it gets downloaded to your cache, isn&rsquo;t THAT reproducing their content without their written permission? Also, if you look at their site they offer PRINT capabilities for each page. SO..they let you PRINT reproduce shit, but not quote? Isnt that a little contradictory? &mdash;addyosmani</span></p><hr><p><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">OHSHI-- I just used document.write() - did I steal their code?!?! &mdash;scrptn</span></p><hr><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">Wait, so does this mean that when people copy their code, they&rsquo;re screwed BOTH in the engineering AND the legal sense? Awesome.</span></p><p class="c3"><span class="c1">--kfranqueiro</span></p></div><div class="c8"><p><a href="#cmnt_ref29" name="cmnt29">[ac]</a><span class="c1">Parody is protected... but i dont know if we could call this parody... :/ &mdash;paulirish</span></p><hr><p><span class="c1">&nbsp;</span></p><p><span class="c1">wikipedia says &ldquo;Examples of fair use include commentary, criticism, news reporting, research, teaching, library archiving and scholarship.&rdquo; A case could be made for scholarship, teaching, criticism and commentary &mdash;antimatter15</span></p><hr><p><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">\o/ &mdash;paulirish</span></p><hr><p class="c3"><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">Similar to an academic thesis, you&rsquo;re not claiming any copyright to the content on w3schools or pretending that you wrote it. Referencing it in this manner comes under fair research/reporting rights. As long as no one pastes huge chunks of their site in here I think you&rsquo;re more than covered -- addyosmani</span></p><p><span class="c1">&nbsp;</span></p><hr><p><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1">This is unequivocally fair use guys (unless you are sarah palin). also don&rsquo;t link to wikipedia as a source of authoritative information, sheesh :S http://www.law.cornell.edu/uscode/17/usc_sec_17_00000107----000-.html</span></p></div><div class="c8"><p><a href="#cmnt_ref30" name="cmnt30">[ad]</a><span class="c1">Put it up on github and let me know when it&rsquo;s going down, I&rsquo;d love to collaborate on that. &mdash;brianloveswords</span></p><hr><p><span class="c1">&nbsp;</span></p><p><span class="c1">Yes! Also this site will go on as </span><span class="c2"><a href="http://www.google.com/url?q=http%3A%2F%2Fgithub.com%2Fpaulirish%2Fw3fools&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNE-xI_mjJpLrU3D4WLzJV9jEFRhTg">github.com/paulirish/w3fools</a></span><span class="c1"> on monday. &mdash;paulirish</span></p><hr><p><span class="c1">&nbsp;</span></p><p class="c3"><span class="c1"> &mdash;subscriptions</span></p></div></body></html>
Jump to Line
Something went wrong with that request. Please try again.