マーリンアームズ サポート   翻訳   コンサル   講座   アプリ   コラム
JavaScript講座     辞書サイト

初めてのJavaScript 第2版    Shelley Powers著    武舎広幸+武舎るみ訳

正誤表

下記の誤り等が見つかりました。お手数ですがご訂正ください。お気づきの点は、ご連絡ページからお知らせいただければ幸いです。

これは第2版の正誤表です。第1版の正誤表はこちらのページをご覧ください。

ご連絡いただいた方、まことにありがとうございます。確認したものについては、メールにてお返事を差し上げております(検討や調査の必要のあるご質問の場合は、しばらくお時間をいただく場合があります。あしからずご了承ください)。 コード等に関するご質問もお受けいたしますが、調査に時間が必要な場合などはお答えできない場合もございますので、あらかじめご了承ください(これまでの経験では、ほとんどはお答えできています)。

なお、一部の行で文字間隔がかなり空いている場合がありますが、これは変数等の英文字列を複数行に分けないためのものですので、あしからずご了承ください。 p. 151ページの5行目などがこの例です。この例の場合、attachEventを2行に分けたくないため、この行の「に相当する」「のメソッドは、それぞれ」の各文字の間隔が広くなっています。

行等 変更前 変更後 公開日
(月日年)
2刷
まで
30 2
  var origin1 = "http://someapplication.com/?catsname=Ze&URL=";
  var origin1 = "http://someapplication.com/?catsname=Zöe&URL=";
「ö」が抜けておりました。 2/17
/2012
1刷 21 8行目 (本文) 寛容性 寛容さ 11/4
/2010
1刷 57 下から14行目 // nValueが10を越えるか100以下なら真 // nValueが10未満か100以上なら真 10/31
/2010
1刷 151 例7-9

下記のように変更してください。変更部分は別の色で表示されています。

なお、このプログラムでは、IEを使ってボタンをクリックしたときには同じメッセージが2度表示されてしまいます。これは e.srcElement(クリックした要素)を表示しているためです。たとえば、 この例のように2つの箇所で別の関数を呼び出すようにするといったことを行えば、区別することができます(この例のコードは簡単なようにグローバル変数を用いて対処しましたので必要に応じて工夫なさってください。原著者もこのあたりの処理をしようとして、FormObjとButtonObjを大域変数にしたものと想像されます)。


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<title>例7-9 ブラウザ間で互換性のあるclickイベントの処理</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript">
//<![CDATA[

// 大域(グローバル)変数
var IsDomLevel2; // DOM レベル2対応か
var IsIE; // IEか

window.onload=setup;
window.onunload=cleanup; // IE用

// 準備
function setup(event) {
  var formObj;
  var buttonObj;

  formObj = document.getElementById("form1");
  buttonObj = document.getElementById("submit1");

  // オブジェクトモデルごとのテスト
  if (formObj.addEventListener) {
    IsDomLevel2 = true;
    IsIE = false;
  }
  else if (formObj.attachEvent) {
    IsDomLevel2 = false;
    IsIE = true;
  }
  else {
    IsDomLevel2 = IsIE = false;
  }


  if (IsDomLevel2) { // Firefoxなど
      formObj.addEventListener("click", alertBubblingUp, false);
      buttonObj.addEventListener("click", alertBubblingUp, false);
   } else if (IsIE) {
      formObj.attachEvent("onclick", alertBubblingUp);
      buttonObj.attachEvent("onclick", alertBubblingUp);
   }
   else {
     alert("このブラウザでは、処理ができません");
   }
}

function alertBubblingUp(event) {
  var e = event || window.event;
  if (IsDomLevel2) {    
    alert("バブルアップ:" + this);
  }
  else if (IsIE) {
    alert("バブルアップ:" + e.srcElement);
  }
  else {
    alert("バブルアップ:DOM レベル0");    
  }
  return true; 
}

// クリーンアップ(IE用)
function cleanup() {
  var formObj = document.getElementById("form1");
  var buttonObj = document.getElementById("submit1");
  if (formObj.detachEvent) {
    alert("IE用のお掃除");
    formObj.detachEvent("onclick", alertBubblingUp);
    buttonObj.detachEvent("onclick", alertBubblingUp);
  }
}

//]]>
</script>

</head>
<body>
  <form id="form1" style="background-color: #ff0; width: 100px; height: 100px; padding: 20px">
    <input id="submit1" type="submit" value="送信" />
  </form> 
</body> 
</html> 
・大域(グローバル)変数の宣言のうち var FormObj; var ButtonObj; の2行は削除します 10/31
/2010
1刷 154 23
   <option value="level1">JavaScriptプログラミング入門
   <option value="level2">JavaScriptプログラミング中級編
   <option value="level3">JavaScriptプログラミング上級編
        ↓
   <option value="level1">JavaScriptプログラミング入門</option>
   <option value="level2">JavaScriptプログラミング中級編</option>
   <option value="level3">JavaScriptプログラミング上級編</option>
10/31
/2010
1刷 166 下から2行目から チェックボックス ラジオボタン p. 166の下から2行目からp. 168の「8.4 テキスト入力フィールド」の前までに出現するすべての「チェックボックス」を「ラジオボタン」に変えてください 10/31
/2010
1刷 167 15 選んでして 選んで 10/31
/2010
1刷 187 下から7 resizeable=no resizable=no 10/31
/2010
1刷 189 下から6 Transitional//EN Frameset//EN 10/31
/2010
1刷 196 下から4 なぜ利用され続けている理由が なぜ利用され続けているのかが 10/31
/2010
1刷 203 下から20 document.writeln("navigator.plugins[i].description; " +
navigator.plugins[i].description + "
");
document.writeln("navigator.plugins[i].description; " +
navigator.plugins[i].description + "
");
10/31
/2010
1刷 231 14
  var r = Math.floor(Math.random() * 255).toString(16);
  r = (r.length < 2) ? "0" + r : r;
  var g = Math.floor(Math.random() * 255).toString(16);
  g = (g.length < 2) ? "0" + g : g;
  var b = Math.floor(Math.random() * 255).toString(16);
      ↓
  var r = Math.floor(Math.random() * 256).toString(16);
  r = (r.length < 2) ? "0" + r : r;
  var g = Math.floor(Math.random() * 256).toString(16);
  g = (g.length < 2) ? "0" + g : g;
  var b = Math.floor(Math.random() * 256).toString(16);
255では254までの値しか出ません。 10/31
/2010
1刷 249 下から19と
下から16
      color = getStyle(obj, "backgroundColor", "background-color");
      ↓
      color = getStyle(obj, "backgroundColor");
2箇所あります 10/31
/2010
1刷 282 下から3 浸かったり 使ったり 10/31
/2010
1刷 283 8 サポートされているかどかを判別する サポートされているかどうかを判別する 10/31
/2010
1刷 290 10
   variableb: "値b".
   variableb: "値b",
10/31
/2010
1刷 299 14 必要というわけではなりません。 必要というわけではありません。 10/31
/2010
1刷 300 下から9 次の2行は不要です。削除してください。
      document.getElementById('submitButton').style.display="none";
      document.getElementById('stateList').onchange=populateList;
10/31
/2010
1刷 319 8 例14-3に示した 例14-1に示した 10/31
/2010
1刷 320 3
   document.getElementById("prefList").onchange=populateList;
       var elem = document.getElementById("prefList");
       catchEvent(elem, "change", populateList);
p. 325の5行目、およびp. 328の下から22行目についても同じ変更が必要です 10/31
/2010
1刷 347 下から12 width=600 width=200 10/31
/2010
1刷 348 下から6 次の6行(最後の空行を含む)を削除してください。
// 消去のためクッキーに過去の日付を設定
function eraseCookie (key) {
   var cookieDate = new Date(2000,11,10,19,30,30);
   document.cookie=key + "= ; expires="+cookieDate.toGMTString()+"; path=/";
}

この関数は使っていませんので不要です。 10/31
/2010
1刷 349 13 className class 10/31
/2010
1刷 350 下から9
	divElement.style.font="14px/16px";
      
	divElement.style.fontSize = "14pt";
	divElement.style.lineHeight = "16pt";
      
10/31
/2010

1刷 310 8  Googleマップの利用には「APIキー」が必要で、GoogleマップAPIのウェブサイト(http://code.google.com/intl/ja/apis/maps/index.html)から無料で取得できます。scriptタグのsrc 属性に指定するURLの一部としてこのキーを指定しなければ使えないようになっています。
...
 登録時に、利用するドメインを指定するようになっており、違うドメインでは動かなくなります(ロー カルで試すことはできます。ローカルサーバ経由で試すときには、http://localhost/...と指定 してください)。
<削除してください> APIキーなしで利用できるようになりました。 10/26
/2010
1刷 310 下から14行目 例14-4のソースをこちらのページのように変更してください(文字化けする場合は、文字コードをutf-8に指定してください。あるいは例14-4を表示して、そのソースをご覧ください)。 APIのバージョン3が公開され、バージョン2はサポートされなくなる見込みです。このため、バージョン3を利用するようプログラムを書き換えました。 10/27
/2010
1刷 312 図14-3 図14-3をここをクリックして表示される画像に変更してください。 例14-4をAPIのバージョン3に対応させたのに伴い、地図の表示も変わりました。 10/27
/2010
1刷 312 下から4 Googleマップについて詳しくは、APIキーを取得するページにあるGoogleのドキュメントや、 Googleマップについて詳しくは、APIのページ(http://code.google.com/intl/ja/apis/maps/)にあるGoogleのドキュメントや、 APIキーなしで利用できるようになりました。 10/26
/2010
1刷 11 8 どちらも(通常は)ブラウザが提供するオブジェクトの集合を表現するものです。JavaScript側から見ると、ドキュメントを構成するオブジェクトとやりとりするためにどうすればよいか(API)を規定するものです。 どちらも(通常は)ブラウザが提供するオブジェクトの集合を表現するものですが、DOMはオブジェクトの階層のうち、Documentオブジェクトから下位の階層のことを指すのが普通です(通常、ここから下の階層に属するオブジェクトがさまざまな操作の対象となります) 赤字部分を追加してください。 9/22
/2010
1刷 214 6 document.cookie = "cookieName=cookieValue; expires=date; path=path";

document.cookie = "cookieName=cookieValue; expires=date; path=path";
cookieName等をイタリックにしてください。この部分を変えてクッキーを設定します。 9/13
/2010
1刷 73 例4-5の5-7 ページ下部の例4-5のDOCTYPE行と<html>行が重複しています。リストの5行目から7行目を削除してください。
7/22
/2010
1刷 7 1 スクリプトプト スクリプト 5/11
/2010
1刷 7 5 サーバをスクリプトからダウンロード サーバからスクリプトをダウンロード 5/11
/2010
1刷 127 6.3.1の
すぐ下
ユーザーエージェント文字列を調べること ユーザーエージェント文字列を調べること
4/25
/2010
1刷 195 12 myFramet myFrame
4/25
/2010
1刷 64 8および9 「lengthメソッド」(あるいは「メソッドlength」) lengthプロパティ lengthは、70ページの表4-1にあるとおりメソッドではありません。 4/12
/2010
1刷 92 9 push、pop、shif、unshift です。 push、pop、shift、unshiftです。 4/8
/2010
1刷 242 下から7 getDocumentById getElementById
2/24
/2010
1刷 290 下から15
	var oneOff = new Object();
	oneOff.variablea = "値a";
	oneOff.variableb = "値b";
	oneOff.method = function() {
	  return this.variablea + " " + this.variableb;
        }
      
	var oneOff2 = new Object();
	oneOff2.variablea = "値a";
	oneOff2.variableb = "値b";
	oneOff2.method = function() {
	  return this.variablea + " " + this.variableb;
        }
      
下から3行目でoneOff2としていますので、oneOff ではなく oneOff2 にしてください。 2/12
/2010
1刷 63 10 MathやDateは名前のとおり数学(数値計算)関連の... Mathは名前のとおり数学(数値計算)関連の...
1/2
/2010
1刷 158 6 fromHandler関数 formHandler関数
1/31
/2010
1刷 158 下から3 "somebutton "somebutton"
1/31
/2010
1刷 139 13 DOLレベル2 DOMレベル2 1/10
/2010
1刷 127 13 6.3.1 オブジェク検出 6.3.1 オブジェク検出 1/9
/2010