Top▲
マーリンアームズ サポート   翻訳   コンサル   講座   アプリ   コラム

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

★News★ 『実践 JavaScript! プログラミングを楽しみながら しっかり身につける』(武舎広幸著、オーム社)出版   →詳細   →Amazon

正誤表

このページは第1版の正誤表です。第3版のサポートページはこちらからどうぞ 第2版のサポートページはこちらからどうぞ

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

ご連絡いただいた方、まことにありがとうございます。確認したものについては、メールにてお返事を差し上げております(検討や調査の必要のあるご質問の場合は、しばらくお時間をいただく場合があります。あしからずご了承ください)。

訂正
刷数*1
(予定)
訂正(変更)前 訂正(変更)後
記載日付
(月/日/年)
4
152
23および33
var target = evnt.target ? evnt.target : evnt.srcElement;

var target = theEvent.target ? theEvent.target : theEvent.srcElement;

var target = evnt.target ? evnt.target : evnt.srcElement;

var target = theEvent.target ? theEvent.target : theEvent.srcElement;
8/22/2016
4
86 下から10

FirefoxではRegExp.$1などとは参照できません。また、SafariやIE(の最近のバージョン)ではRegExp.$0はundefinedになってしまいます。

下から10行目から、次のページの10行目までを下のように変更してください。

正規表現のパターンマッチングでは、括弧で囲むと別の意味が生じます。(...)に囲まれた部分のマッチが記憶され、覚えた値は配列に保存されます。次の例を見てください。

var rgExp = /^(\D*)([-0-9]+)(.*)$/;
var str = "私の電話番号は080-9988-0009です。";
var resultArray = str.match(rgExp);
document.writeln("<p>");
document.writeln(resultArray[1] + "<br />");
document.writeln(resultArray[2] + "<br />");
document.writeln(resultArray[3] + "<br />");
document.writeln(resultArray[0] + "<br />");
document.writeln("</p>");

結果は次のようになります。

私の電話番号は
080-9988-0009
です。
私の電話番号は080-9988-0009です。

最初の(...)は、行頭から数字以外の文字列、つまり"私の電話番号は"にマッチします。続く[-0-9]+は「-」と数字からなる文字列にマッチしますので、"080-9988-0009"とマッチすることになります。3つ目の.*は残りの文字列とマッチしますので、"です。"とマッチすることになります。

マッチさせた結果はresultArrayに代入されます。resultArray[0]にはマッチした文字列全体が入り、resultArray[1]、resultArray[2]、...には(...)で指定された部分文字列が順に記憶されます。

9/2/2009
4
294
下から11
state pref 5/15/2008
4
229
下から7
getDocumentById getElementById 5/9/2008
4
35
5
lieral literal 4/8/2008
4
287
16
DHML DHTML 2/19/2008
4
43
9
上の例ではsValueをどこかで宣言していないエラーになってしまいます。 上の例ではsValueをどこかで宣言していないエラーになってしまいます 2/2/2008
4
197
下から3
</script>の後に2行追加してください。 </head>
<body>
1/25/2008
4
198
2
<p> </p> 1/25/2008
4
198
3
</head> この行を削除してください。 1/25/2008
4
199
下から17
World</h1>" World</h1>";
1/15/2008
JavaScriptの場合、文末に「;」はなくてもよいので、エラーにはなりませんが、他の行では「;」を書いていますので、統一した方がよいですね。
4
82
7
マッチするあるかどうか マッチするかどうか 1/14/2008
 
3
74
下から9
if (holdAnwer.toValue) ... if (holdAnswer.toValue) ... 11/20/2007
3
90
12
new Date(1977, 12, 23); new Date(1977, 11, 23); 11/20/2007
3
90
下から13
var numMs = Date.UTC(1977,16,24,30,30,30) var numMs = Date.UTC(1977,11,24,19,30,30,30) 11/20/2007
3
98
14
shiftは最初の要素を返します shiftは最初の要素を削除します。 11/20/2007
3
134
下から15
document.addEventListener( "click", clickMe, false); evtObject.addEventListener( "click", clickMe, false); 11/20/2007
3
146
3
例4-9 例7-1 11/20/2007
3
151
21
DOMレベルでの DOM 11/20/2007
3
210
16
  </head></script>の下に追加 11/20/2007
3
210
下から12
ファクトリオブジェクト ファクトリメソッド 11/20/2007
3
218
19
nullでないとき nullのとき 11/20/2007
3
132
下から2
最下位 最上位 11/19/2007
3
同上
同上
下から 上から 11/19/2007
3
45
下から6
432.54という数値があります。まず整数部分を取り出し、さらにその値を16進数、8進数として整数に変換するには、JavaScriptのどの関数を使えばよいですか。

"432.54"という文字列から、整数部分を取り出すコードを書いてください。また、この文字列を、16進数、8進数として解釈して整数部分を取り出すコードを書いてください。

11/19/2007
3
294
17
s<abortの説明の下に右記のメソッドを追加してください> overrideMimeType()
ドキュメントのコンテンツタイプを強制的に特定のものとして扱うことができます。サーバから XMLが送信されてはくるものの、Content-Type ヘッダが正しくないという場合に有用です(IEではサポートなし)。
11/19/2007
3
295
9
Onreadystatechange onreadystatechange
(oは小文字です)
11/19/2007
3
294
11
Keep-Alive

Keep-Alive (フォントを等幅フォントにしてください)

11/19/2007
3
40
10
10進数の-52579 10進数の-52479 11/4/2007
3
313
14-16
script.aculo.usをで始まるパラグラフは、足跡マークの「メモ」の一部ではなく本文です。 10/2/2007
3
214
11
「パララフ(p)を」 「パラグラフ(p)を」。
また「を」がゴシック体になっていますが明朝体にしてください
10/2/2007
3
278
8
見ない 見えない 10/2/2007
3
278
7
vibility visibility 10/2/2007
3
261
10
styleロパティ styleプロパティ 10/2/2007
3
305
4
arker marker 10/2/2007
3
121
14
linline model inline model 9/24/2007
3
142
下から1
formFunction.false); formFunction, false); 9/24/2007
3
108
1行目から
18行目

このページを開いて、「return x+y」「4」「6」の順に入力すると、次のような結果が表示されます。

関数の定義:return x+y
引数x の値:4
引数y の値:6
結果:10

今度は、「return x+y」「この本の書名は」「『初めてのJavaScript』」の順に入力すると、先ほ
どは加算の意味に解釈された「+」は今度は連結の意味に解釈されて、次のように表示されます。

関数の定義:return x+y
引数x の値:この本の書名は
引数y の値:『初めてのJavaScript』
結果:この本の書名は『初めてのJavaScript』

今度は「return x*y」「この本の書名は」「『初めてのJavaScript』」と入力してみましょう。すると結果は次のようになります。数字でない文字列に対して掛け算をすることはできないので、結果としてNaN(Not a Number)が返されることになります。

関数の定義:return x*y
引数x の値:この本の書名は
引数y の値:『初めてのJavaScript』
結果:NaN

このページを開いて、「return x+y」「4」「6」の順に入力すると、次のような結果が表示されます。

関数の定義:return x+y
引数x の値:4
引数y の値:6
結果:46

今度は「return x*y」「4」「6」の順に入力すると、次のような結果が表示されます。

関数の定義:return x*y
引数x の値:4
引数y の値:6
結果:24

また「return x+y」「この本の書名は」「『初めてのJavaScript』」の順に入力すると、次のように表示されます。

関数の定義:return x+y
引数x の値:この本の書名は
引数y の値:『初めてのJavaScript』
結果:この本の書名は『初めてのJavaScript』

一方、「return x*y」「この本の書名は」「『初めてのJavaScript』」と入力してみましょう。すると結果は次のようになります。数字でない文字列に対して掛け算をすることはできないので、結果としてNaN(Not a Number)が返されることになります。

関数の定義:return x*y
引数x の値:この本の書名は
引数y の値:『初めてのJavaScript』
結果:NaN

9/5/2007
3
viii
下から1
Data Date
6/16/2007
3
x
下から7
http://www.malrin-
arms.co.jp/jpn/support/ljs/
http://www.marlin-
arms.co.jp/jpn/support/ljs/
7/9/2007
3
6
下から6
コードを書くこと コードを書くこと
6/16/2007
3
14
17
date関数が呼び出されときに
date関数が呼び出されたときに
6/23/2007
3
57
下から3
stateCode prefCode
6/28/2007
3
76
図4-1
図の実行結果が違っています(下の3行がもう一度繰り返し出力されます) こちらの図が正しい実行結果です
6/13/2007
3
82
下から8
result = re.exec(str) resultArray = re.exec(str)
6/23/2007
3
84
11
マッチさせてみましょう。 マッチさせてみましょう(これは文字列の例であって、JavaScriptの文ではありません)
6/23/2007
3
97
14
要素を2個追加して、2個削除します。

要素を2個削除して、1個追加します。

6/13/2007
3
97
23
林檎, 桃, メロン, ライム, 林檎, 桃, メロン, ライム, 桜桃
6/13/2007
3
98
5, 11
shif shift
6/29/2007
3
99
2
// popを使って配列からアイテムを外す // shiftを使って配列から要素を取り出す
6/13/2007
3
99
10
// 次に、shiftとunshiftも同様に行う // 次に、unshiftとpopも同様に行う
6/13/2007
3
99
17
// unshift // pop
6/13/2007
3
120
下から3
最近ののもの 最近のもの
6/29/2007
3
124
下から12
なの などの 7/18/2007
3
130
下から11
採用されているこを 採用されていることを
6/29/2007
3
137
下から7
発生させるする 発生させる
6/29/2007
3
139
下から2
対するの 対する
7/2/2007
3
146
3
例 4-9 例 7-1
7/2/2007
3
166
下から5
クロスサイトスクプティング クロスサイトスクリプティング
7/9/2007
3
169
2
狙う「インジェクション 狙う「インジェクション
7/9/2007
3
176
下から3
inimizable minimizable
6/24/2007
2
178
6
新しいウィンドウを開くするとき 新しいウィンドウを開くとき
6/09/2007
3
197
下から11
currentPhoto-; currentPhoto--;
7/9/2007
3
201
下から5
できるだけ限り できる限り
7/9/2007
3
236
12
アーティストしての アーティストしての 7/13/2007
3
236
13
が呼び出されて 〜が呼び出されて 7/13/2007
3
236
21
構わない 構わない 7/13/2007
3
238
8
arrayを performedByを 7/13/2007
3
238
21
どかを判別

かを判別

7/13/2007
3
244
下から5
最初の2つだけ 最初の2つだけ
7/9/2007
3
246
17
variableb : "値b". variableb : "値b",
6/24/2007
3
246
19
return this["変数a"] + " " + this["変数b"]; return this["valiablea"] + " " + this["valiableb"];
6/24/2007
3
266
下から9
DHTL DHTML
7/18/2007
3
269
下から5
ドラッグドラッグ&ドロップ ドラッグ&ドロップ
7/18/2007
3
292
10
MLHttp XMLHttp
7/9/2007
3
307
下から4
変更していまい 変更してしまい
7/18/2007
3
316
6
文書化されていないというとこです。 文書化されていないというところです。
6/13/2007

*1 訂正した(あるいは訂正予定の)刷数です。たとえばここに「3」とあったら、第2刷あるいは第1刷をお持ちの方はご訂正ください。

練習問題の解答

問題番号
記載日付
(月/日/年)
2-4

問題と解答を次のように訂正させてください(原著のコードが間違っておりまして、著者の意図がよくわかりませんので、改めました)。

問題

"432.54"という文字列から、整数部分を取り出すコードを書いてください。また、この文字列を、16進数、8進数として解釈して整数部分を取り出すコードを書いてください。

解答

var fltNumber = "432.54";
var intNumber = parseInt(fltNumber);
var octNumber = parseInt(fltNumber,8);
var hexNumber = parseInt(fltNumber,16);

ご参考

たとえば、次のようにalert()などを挿入すると、結果を確かめることができます。

var fltNumber = "432.54";
var intNumber = parseInt(fltNumber);
alert(intNumber);
var hexNumber = parseInt(fltNumber,16);
alert(hexNumber);
var octNumber = parseInt(fltNumber,8);
alert(octNumber);

 

 

11/19/2007

 

2-1
「som&#232;variableは変数として有効ではありません」と書きましたが、著者によると、p. 29にあるとおり、JavaScript 1.5では有効な変数です。ただし、今のところ多くのブラウザで構文エラーになりますので、この形式の変数は使わないようにしてください。 6/16/2007