勝手に添削: javascriptはじめました - 2限目

これへの批評的算譜編制*1javascriptはじめました - 2限目 - finalventの日記
どうなんでしょうか。コードにダンコガ〜イ風味が足りない気がしました。

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>としょかんにて</title>
<script type="text/javascript">//<![CDATA[
(function(){
  var addListener = (function(){
    if (window.attachEvent) {
      return function(e, n, f){ e.attachEvent('on' + n, f); };
    }
    else {
      return function(e, n, f){ e.addEventListener(n, f, false); };
    }
  })();
  
  var $ = function(id){ return document.getElementById(id); };
  
  addListener(window, 'load', function(){
    addListener($('what_time'), 'click', function(){
      $('what_time').innerHTML
        = new Date().toLocaleTimeString() + 'よ。このアホンダラゲ!';
    });
  });
})();
//]]></script>
</head>
<body>
<h1>としょかんにて</h1>
<p><span id="what_time">今何時だと思ってんのよっ!</span></p>
</body>
</html>

ポイント:

  1. 題名に「勝手に添削」がないとね。くっくっ。
  2. 全体を(function(){ })();でくくって名前空間を隔離する。
  3. addEventListener を使わなくては。
  4. でも、MSIE のために attachEvent も受け付けるようにしておかないとね。
  5. addListener を定義するのに、?:三項演算子使えばいいのに、無駄に (function(){ })(); で囲んで if 文を使おう。
  6. return function(){}; で関数オブジェクトを返すのが今風。
  7. prototype.js 風に $() 関数を定義して使わねば。

なお、はルひネタは、ダンコガ〜イ風味とは関係ありません。為念。

*1:程序編制の方が中国語っぽいかも。