カテゴリー
JavaScript

DOMについて知ろう

この章では「DOM」(Document Object Model)と呼ばれている機能について学習します。
DOMとはxmlやhtmlの各要素にアクセスするための機能のことです(JavaScriptからHTMLやXMLを操作するための機能)。
例えばhtmlの中の「文や画像」を取り変えたりすることが出来ます。
DOMを視覚化すると以下のような図で表すことが出来ます。
これをDOMツリーと言いますが、それぞれ各要素はノードと呼ばれるオブジェクトで構成されています。1 テキストもHTMLの各要素もすべてオブジェクトです。
例えば111という文もすべてオブジェクトです。
「<p>」は要素ノード、「あいうえお」はテキストノードと言います。
「<div id=”a”>」の中のidなどの属性は属性ノードと言います。 1111
次にHTMLの要素にアクセスする方法について説明します。
HTMLの要素にアクセスする方法は以下の4種類あります。1 初めにgetElementByIdメソッドから説明します。
このメソッドは何回か説明しましたが、復習のつもりでもう一度説明します。1111 getElementByIdメソッドはHTMLの中のid属性にアクセスするので、この例の1を記述しています。
この例の場合はaです。
innerHTML はHTML内のテキストにアクセスできるプロパティですので1 の箇所は1 の中の文字列である「あいうえお」と同じ意味です。
1に「いろはにほへと」を代入することで「あいうえお」が上書きされて「いろはにほへと」に代わって表示されます。11    
次の例をみてみましょう。111 この例では画面に表示される文字の色を変更する方法について説明します。
前の例の1では文字列を上書きできましたが1では1を付けることで文字の色を変えることが出来ます。
1の引数をredにしているので文字の色は赤になります。
結果は以下の「色埋め」をクリックすると
「いろは」が赤くなります。11 この例のプロパティはcolorですが、これは色を設定するプロパティです。
他にもプロパティはたくさんあるので、以下のプロパティを参考にしてください。1111111
では次の例をみてみましょう。111 この例では画面の文字表示を変更するinnerHTMLプロパティについて説明します。
innerHTMLはHTML内の要素のテキスト部分にアクセスするプロパティですので1
1の中の「こんにちは」を指しています。
そしてこの文字に1の値を代入しています。
結論から言うと1で入力した文字が1に埋め込まれます。1 テキスト欄に入力した値は1の中に入っていますので、この値で「こんにちは」を書き替えます。1
次はHTMLの要素にアクセスする方法の2つ目のgetElementsByTagNameメソッドについて説明します。1111 この例ではgetElementsByTagNameメソッドを使って「input要素を取り出し」、その中から「itemという命令」を使ってインデックス番号が0の要素を取り出しています。1 getElementsByTagNameはid属性がない要素にアクセスしたい場合に使います。
getElementsByTagName の引数にはid名の代りに要素名を指定します。
getElementsByTagNameの引数に要素名を書くと、その指定した要素にアクセスすることが出来ます。
この例で言いますと以下のinputタグのすべての要素にアクセス出来ます。1 この中から特定したデータを取り出したい場合は
以下のようにitemメソッドを使います。1 itemメソッドはノードを取得するメソッドです。
getElementsByTagNameメソッドは該当したリストを返すので(この例の場合はinput要素のリスト)、そのリストの中のいずれかの該当するノードを指し示すために1などとitemメソッドの引数に数値を指定します。
この例の場合はitem(0)なので1 を意味します。1 最後にvalueを使って1と、記述することでそのノードの値を取得することが出来ます。このobjにはitemメソッドで指定したノードが入っています。
「push」をクリックすると以下のダイアログボックスが表示されます。1 前の例では特定の値だけを取り出していましたが、すべての値を取り出す方法を以下の例で説明します。1111 初めに1 でinputタグの要素を取得します。
次に1を変数(sf変数)に入れて、その変数にlengthを付けることによりinputタグの要素数を取得します。
また、1のように-1をしている理由は-1を付けないと
以下のvalueの値まで取得してしまうからです。1 「length-1」の数だけfor文でループすると以下のようになります。1 結果は以下の通りです。1 次はHTMLの要素にアクセスする方法の3つ目のgetElementsByNameメソッドについて説明します。
では例をみてみましょう。1111 name属性から要素を取り出すにはgetElementsByNameを使います。
この例の1はname属性からその属性のデータにアクセスしています。
この例ではaを指定していますが, aは以下の3か所あります。1 getElementsByNameメソッドは該当したリストを返すので(この例の場合はnameの属性名aのリスト)、そのリストの中のいずれかの該当するノードを指し示すために1などとitemメソッドの引数に数値を指定します。
最後にvalueを使って1と、記述することでそのノードの値にアクセスすることが出来ます。
このobjにはitemメソッドで指定したノードが入っています。
結果は以下の通りです。1
次はHTMLの要素にアクセスする方法の4つ目の
getElementsByClassNameメソッドについて説明します。1111 クラス名を使って要素にアクセスします。
getElementsByClassNameメソッドの引数にclass名を指定しますとそのクラス名を持つ要素を取得できます。
この例では1のようにアクセスしたいクラス名を引数に書きます。1 次に以下の箇所の説明をします。1 getElementsByClassNameメソッドは該当したリストを返すので(この例の場合はclass名のリスト)、そのリストの中のいずれかの該当するノードを指し示すために1などとitemメソッドの引数に数値を指定します。
指定したクラス名を出力するにはclassNameを使って1という形式で書きます。
このobjにはitemメソッドで指定したノードが入っています。
結果は以下の通りです。1 1では他の例をみてみましょう。
この例は先ほどの例を変更したものです。
以下の箇所以外は同じプログラムです。1 以前、「style.color」で色を変えたのを覚えているでしょうか。
ここではitemメソッドの0番目の要素のテキストの色を赤に変更しています。1
次はDOMを使ってHTMLの中身を書き替えます。
これまでの例でもinnerHTMLを使って、文章を書き替えていましたが、ここでは他の方法で文章を書き替えたり、新しい要素を作成する方法を紹介します。111 1と書くことでテキストノードを作成することが出来ます。
この例では「宮本武蔵です」というテキストを作成しています。
createTextNodeメソッドだけでは実際には画面上には反映されません。
画面上に反映させるためにはappendChildメソッドを使って、1という構文で書きます。

これは1として、追加するノードを記述します。
この例では1の箇所ですが、pにテキストを追加しています。
結果は以下の通りです。1
次は新しいタグをhtmlの中に作る方法について説明します。111
1=> getElementByIdでid属性の値aのノードを取得します。

11と言う形式でh3タグを新規に作成します。1

1=>先ほど説明した1で新たなテキストを作成します。1
1=> appendChildでh3タグに「こんにちは」と言うテキストを追加します。11
「push」をクリックすると「あ」を表示します。1
次はinsertBeforeについて説明します。1111 insertBeforeはすでにある子ノードの前に新しいノードを入れるためのメソッドです。1
1=> 1という記述で親要素のノードが取得できます。
つまり、1の引数にbodyを指定して、itemメソッドの引数を0にします。
1=>1のノードを取得します。
1=>新たに「<div>タグ」を作ります。
1=>テキストノードを作成します。
1=>「<div>タグ」に「’追加x’」を追加します。
1=>ノードに何か属性を付けたい場合は1と言う形式で書きます。
1=>文字の色を変えたい場合は1と言う形式で書いてください。
1=>この例の場合はbody要素の中の1の前に新しく作った「<div>」を挿入します。
では表示をみてみましょう。
以下の「push」をクリックします。1 「push」をクリックしますと以下のように1が追加されていることが分かります。1 「push」を押すごとに追加されていきます。1
次は指定したノードを削除する例を見てみましょう。1111 childNodesプロパティは親要素の中の子ノードにアクセスします。
そして、子要素をリストとして返します。
1=>aは<div>という親ノードなので、親ノードの子ノードの最初の要素を意味しています。

最初の要素は1で指定しています。
以下の箇所でremoveChildメソッドに先ほど作成した子ノードを入れます。1 このように記述することで子ノードの最初のノードを消すことが出来ます。1 ボタンを押すごとに要素が1つずつ消えていきます。1 補足ですが、上の表示結果はchromeで実行したのですが、1個消すごとに2回クリックしないと消えません。
これはpタグの間に空白のノードが入っているからです。
つまり、空白もノードとして設定されているのです。
また以前、Domツリーについて説明しましたが、ブラウザによりノードの配置は違います。
下の図の番号はitemメソッドの引数の番号を示しています。1 前の例で指定したノードを一つずつ削除する方法について説明しましたが、次の例ではすべてを一気に消す方法について説明します。1111 この例ではfirstchildプロパティを使います。1 firstchildプロパティは親ノードの中の最初の子ノードを意味します。
子ノードがなければ null を返します。
whileの条件式にfirstchildプロパティが入っているので、子ノードがなくなればnullになり、while文が終了となります。
つまり、whileを使って1がtrue(まだ何か要素が入っている状態)の間、子ノードを消していきます。
以下の状態で「push」をクリックします。1 結果、以下の通り、一気にすべてを消すことが出来ます。1
次はgetAttributeメソッドやsetAttributeメソッドについて説明します。111 ではプログラムの説明をします。
1=>1で、id属性の値が以下のaのノードを取得します1
1=>p要素のid属性の値をxに変更します。
setAttributeメソッドは指定の要素ノードに新しい属性を追加したり、指定の要素ノードの属性の値を変更します。1

1 => a1.getAttribute(“id”)ではidの値を返しますので、「×」が出力されます。1 getAttributeメソッド は指定した属性の値を返します。
属性が存在しなければ null もしくは1を返します
結果は以下の通りです。1
次の例ではノードを置き替えるreplaceChildメソッドについて説明します。1111 1replaceChild は指定の要素の子ノードを別のものに置き換えることが出来ます。
1111 以下の状態で「push」をクリックします。1 結果は先頭に「追加x」が追加されます。1
次の例ではparentNodeプロパティについて説明します。
parentNodeプロパティは親ノードを取得するプロパティです。1111
では説明をしていきます。111 以下の状態で「push」をクリックします。1 結果は「猫」が「追加x」に変更されます。1

カテゴリー
JavaScript

様々なオブジェクト(Historyオブジェクト)について知ろう13

この章ではHistoryオブジェクトについて説明します。
Historyオブジェクトはページの来歴に関する情報を提供するオブジェクトです。1 では例をみてみましょう。111 goメソッドの引数にマイナスの数を指定すると前のページに移動し、プラスの数を指定すると次のページに移動します。
移動するページがなければ何も動きません。11 一度「進む」でgoogleのホームページに飛んで、そこからブラウザの戻るボタンで上の画面に戻ってください。
その後に「進む」をクリックすると再度googleのホームページに移ります。
この例の場合には前のページが無いので「戻る」は動きません。

カテゴリー
JavaScript

様々なオブジェクト(navigatorオブジェクト)について知ろう12

この章ではnavigatorオブジェクトについて説明します。
navigatorオブジェクトはユーザーのブラウザに関する情報やPC環境情報を取得できるオブジェクトです。11 では例をみてみましょう。111 これは筆者の情報ですが、出力すると以下のようになります。11 次の例をみてみましょう。1 これは筆者の情報ですが、出力すると以下のようになります。1 不明の場合はundefinedが返されます。

カテゴリー
JavaScript

様々なオブジェクト(screenオブジェクト)について知ろう11

この章ではscreenオブジェクトについて説明します。
screenオブジェクトはディスプレイに関する情報を与えてくれるオブジェクトです。
では例をみてみましょう。1 結果は上から以下の通り出力します。1[基本構文]
screen.プロパティ111

カテゴリー
JavaScript

様々なオブジェクト(Formオブジェクト)について知ろう10

この章ではFormオブジェクトについて説明します。
FormオブジェクトはHTMLのフォームのデータを取得するなど、フォームにアクセスするためのオブジェクトです。
フォームの入力データが正しいかどうかをチェックしたりすることが出来ます。
FormオブジェクトはHTMLのformの要素1つ1つをオブジェクトとして扱います。
具体的にformオブジェクトとはButtonオブジェクト、Textオブジェクト,FileUploadオブジェクト,Submitオブジェクト,Resetオブジェクト, Radioオブジェクト,Checkboxオブジェクト,Buttonオブジェクト,Selectオブジェクト、Textareaオブジェクト、Passwordオブジェクトのことを言います。
では例をみてみましょう。1111 結果は名前を入力しない場合には以下の通り表示されます。1 名前を入力した場合には以下の通り表示されます。1 ではどのようにしてformの要素にアクセスするか説明します。
基本構文は以下の通りです。1 Formオブジェクトはそれ自体がdocumentオブジェクトのプロパティとなりますので、先頭にdocumentが付いた形式になります。
構文のフォームの名前と要素の名前はname属性の値を指定してください。1 例では1が該当します。
これでform内の1の箇所にアクセスすることができます。
これでフォームの指定箇所までアクセスできましたが、この箇所から入力されたデータを得るためにはvalueプロパティが必要です。
入力した値を取得するには1 と言う形式で入力されたデータを取得することが出来ます。
つまりこの例では1と書いています。
フォームのデータを取得するには1 の他にも以下の構文でも可能です。1 上の構文で1を書き替えると以下のようになります。1 では実際に[番号による指定or名前による指定]の説明をします。
以下のようなフォームがあるとすると以下のような番号で
「番号による指定」を行います。11 では具体的にフォームの要素にアクセスする方法について説明をしていきます。
0番目のフォームforms[0]の
0番目のエレメントelements[0]
は以下の記述です。1
0番目のフォームforms[0]の
1番目のエレメントelements[1]
は以下の記述です。1
0番目のフォームforms[0]の
2番目のエレメントelements[2]
は以下の記述です。1 以下のように番号による指定と名前による指定は混在していても構いません。1
では例の説明に戻ります。1 値がカラの場合、つまり何も入力していない場合は1と、警告が出ます。
警告が出た後はfocusメソッドによって指定した入力欄にフォーカス(カーソル)を合わせます。1
1の意味は「フォームのテキスト欄にフォーカスしてね」と言う意味です。
focusメソッドは「名前が未入力です」というダイアログボックスのOKをクリックした後に次のようにカーソルを入力欄に合わせてくれます。11
以下の例で補足をします。1 未入力の場合にはcheck1メソッドの中に1と書いてあるのでfalseが返されます。
このfalseがどこに返されるのかと言いますと1の箇所です。
falseが返されることでイベントの実行を中止にすることが出来ます(この例ではonsubmitの実行を中止します)。
では今度は次の例のようにformタブの中のonsubmit属性の値からreturnを外してみましょう。
さらに1を付け加えます。
名前がカラのときに1は実行されますが、そのまま処理が中断せずに1も実行してしまいます。
つまり、returnを付けないとイベントの実行を中止にすることが出来ません。11 以下の「名前が未入力です」のダイアログボックスの中のOKをクリックしますと、1も実行してしまいます。11
以下の箇所に「return」を付けると「名前が未入力です」のダイアログボックスの中のOKをクリックしても1は実行されません。つまり、イベントの実行が中止されているという意味になります。1 補足はここで終わります。
次は「ラジオボタン」が選択されているかどうかをチェックする方法とそのチェックされた値を出力する方法について説明します。1111 初めに1のname属性の値はすべて同じにします。この例ではすべてabcになっています。
以下の箇所ではsubmitボタンを押すとsample関数が呼び出されます。1 ではsample関数内の説明をします。1 =>ここではラジオボタンがいくつあるかを取得しています。
1の後ろにlengthを付けるとラジオボタンの個数を得ることが出来ます。
name属性の値はabcですべて同じ名前ですが、ラジオボタンのように複数の同じ要素名がある場合はその要素は配列になります。
ですのでlengthで配列の要素数を取得できます。

1=>ラジオボタンがチェックされているのかを知るにはcheckedプロパティを使います。
選択されている場合は true を、選択されていない場合は false を返します。1 チェックされている箇所を1の箇所で出力します。
valueを付けることで選択された要素を取得できます。
結果は以下の通りです。1
次は「チェックボックス」にチェックが入っているかの確認する方法について説明します。
では例をみてみましょう。11111 「チェックボックス」は複数のデータを選択できますので、選択した分をダイアログボックスにすべて表示します。1 始めはif文の1の結果、falseになり、以下のmoji変数にはチェックを入れた初めの要素が入ります。1 つまり、すべてのチェックボックスにチェックが入っているとすると1周目は「OK」が入ります。1 結果は以下の通りです。1 何もチェックを入れないと以下の通りになります。1
次はフォームのセレクトボックスの未選択をチェックする方法について説明します。
では例をみてみましょう。11111
セレクトボックスでの未選択を確認するにはselectedIndexプロパティを使います。1 フォームのセレクトボックスで選ばれた項目の番号を返します。1 =>未選択が 0 で、その他はセレクトボックスの上から1と数えます。
つまり、猫が1,犬が2,タヌキが3を返します。
未選択の場合は1が実行されます。

次はselectedIndexを使って、セレクトボックスで選択されたテキスト部分のデータを取得する方法について説明します。1 はフォームのセレクトボックスで選ばれた項目の番号を返しますが、これを以下の構文のoptionsの引数に入れます。1 この構文でセレクトボックスで選択したテキスト部分のデータにアクセスすることが出来ます。
例では以下の箇所です(スペースの都合で複数行で書いています)。1 テキスト部分のデータとは1 の中のテキストの部分である以下の箇所です。
「猫ちゃん」
「犬ちゃん」
「タヌキちゃん」
その中の選択した項目がアラートで表示されます。
また、以下のように先ほどの構文のtextの代わりに1を付けるとどうなるのかを説明します。1 このようにvalueを付けると以下のvalueの値にアクセス出来ます。1 つまり、以下の箇所です。
「猫」
「犬」
「タヌキ」
ではこの例の表示結果をみてみましょう。
何かを選択すると選択した項目がアラートで表示されます。
結果は以下の通りです。1 上のダイアログボックスのOKをクリックしますとさらに以下のダイアログボックスが表示されます。1 次はセレクトボックスで複数選択した時の例をみてみましょう。11111 セレクトボックスで複数選択して以下のように出力した場合、出力されるのは最初に選択した値だけです。1 すべての値を出力したい場合はfor文を使用してください。1 この構文でセレクトメニューの数を取得します。1 =>if文の条件式でそれぞれの要素が選択されているかを確認しています。
セレクトメニューの場合はselectedで確認しますが、ラジオボタンやチェックボックスはcheckedで確認するので気を付けてください。
以下の箇所で選択項目を出力します。1 =>選択している値だけをalertで出力します。
次はthisを関数に渡す例について説明します。
いままではイベント設定時には以下のように関数の引数はカラでした。1
今回は「this」を引数として渡します。1 thisとはオブジェクト自身を指します。
この例のthisはイベントが発生している場所であるformを指していることになります。
では例を見てみましょう。11111
sampleの引数のthisは1のyで受けます。
今までは1と、長々と書いていましたが1と省略して書くことが出来ます。
つまり1は同じ意味です。
先ほども書きましたが、thisはイベントが発生している場所であるformを指していることになります。

カテゴリー
JavaScript

イベントについての他の書き方

「様々なオブジェクトについて知ろう9」において、イベントを実行する方法について説明しましたが、この時にはHTMLのタグに直接イベントを設定しました。
この章ではJavaScriptのコードの中にイベントを書く方法について説明します。
では例をみてみましょう。111 JavaScriptのコードの中にイベントを書く方法は2つあります。1 この例ではwindowオブジェクトにonloadを設定しています。
これはbodyタグに対する設定です。
この例ではブラウザにページがロードされた時に起動します。
そして、getElementByIdで指定したidのあるタグに対してイベントを実行します。
これはHTMLの要素に対しての設定です。
この例の場合はonclickを使っているので、クリックした時にイベントが発生します。1 動きは基本構文1と同じです。
では例をみてみましょう。111 実行結果は例1と例2ともに以下の通りです。
「click」をクリックするとダイアログボックスが表示されます。1

カテゴリー
JavaScript

様々なオブジェクト(windowオブジェクト)について知ろう9

この章ではwindowオブジェクトについて説明します。
Windowオブジェクトは以下の通り、Documentオブジェクトなどに分類できます。
[Windowオブジェクト]
• Windowオブジェクト (self、parentなど)
• Documentオブジェクト
• Formオブジェクト
• Anchorオブジェクト
• Linkオブジェクト
• Imageオブジェクト
• navigatorオブジェクト
• locationオブジェクト
• historyオブジェクト
• screenオブジェクト
例えば今まで1を使用してきましたが、これはdocumentオブジェクトのwriteメソッドを使っています。
windowオブジェクトはウィンドウに関しての色々なメソッドやプロパティを提供しています。1111 では例を見てみましょう。1111 この例は「押す」というボタンを押したら、msg関数が実行されて「ボタンを押しましたね」というダイアログボックスが表示されるという構造になっています。
以下のダイアログボックスはchromeの表示です。
ブラウザによりダイアログボックスの形式は違います。
inputタグに埋め込まれているonclickの意味は後ほど詳しく説明しますが、英字の通り「クリックしたのならば」という意味があります。1 またはbodyタグに埋め込むことも出来ます。11 この例はonloadを使っていますが、これはページの読み込みが完了した時に「秘密ね」と言うダイアログボックスが現れます。
onloadの意味は後ほど説明します。1
次の例はaタグに埋め込んでいます。11 「google」をクリックすると以下のように「リンクがクリック」とダイアログボックスが現れますので、「OK」を押すとグーグルのホームページに飛びます。1
ではonloadとonclickについて説明します。
「ページの読み込みが完了したとき」や「ボタンをクリックしたとき」などの動作のことをイベントと言います。
「ページの読み込みが完了したとき」や「ボタンをクリックしたとき」に動作を行わせるのがonloadとonclickなどのイベントハンドラです。
イベントハンドラはonloadとonclickだけではありません。
以下のようにたくさんのイベントハンドラがあります。111
次はconfirmメソッドについて説明します。
このメソッドはalertメソッドと似ているのですが、alertメソッドはただ「OK」のあるダイアログボックスを表示するだけですが、confirmメソッドはダイアログボックスに「OK」と「キャンセル」の2つ表示して、ユーザーに確認を求めます。
では例をみてみましょう。111 「移動」ボタンを押すとsample関数が実行されます(スペースの都合で関数内のifの条件部分や変数部分を2行で書いていますが1行で書いても結構です)。
関数の中に処理が移ると1 が実行されて、1がダイアログボックスの中に表示されます(windowは省略することが出来ます)。1 confirmメソッド はOKが押された場合はtrueを返し、 キャンセルが押された場合にfalseを返します。
trueの場合は1のサイトに移ります。
falseの場合は1が実行されます。
このifの条件式のようにtrueであるのかfalseであるのかを判断する時に、明示的にtrueやfalseを条件式に書けることを覚えておいてください。1 次に以下の箇所の説明をします。1 =>このlocationとはlocationオブジェクトのことであり、webページの現在のURLの情報を取得したり、設定したりします。
hrefはlocationオブジェクトのプロパティで、現ページのURLを持っています。
例えば1と出力すると以下のように出力されます。1 また、このlocation.hrefに他のURLを代入するとそのURLに移動することが出来ます。

次はpromptメソッドについて説明します。
では例をみてみましょう。111 これを実行すると以下の通り表示されます。1 名前を入力しOKを押すと以下の画面が表示されます。111 第1引数にはダイアログボックスに表示するメッセージ、第2引数には文字入力箇所に初期値を記述します。
初期値が無い場合は例のようにカラでも結構です。
なお、第1引数と第2引数の間には「,」が必要です。

次は以下の箇所を説明します。1 =>「押してね」をクイックするとsample関数が呼び出されます。

11 という箇所ではダイアログボックスの中に「お名前は?」という文が表示されて、その下の空欄に、記述できるテキストボックスが表示されます。
promptメソッドは何か文字を入力した時はその文字を戻り値として返します。
この例の場合はnameにその戻り値が代入されます。
キャンセルを押した場合は1を返します。
何も入力せずにOKボタンを押した場合は1が入ります。

1 =>ここでnameがカラではなく、nullでも無い時に1 が実行されます。
次はopenメソッドについて説明します。
では例をみてみましょう。1111 window.openメソッドは1を作ります。1 「ウィンドウの名前」はa要素やform要素のtarget属性と同じ名前になります。
target属性はHTMLの分野なので詳しくは説明しませんが
target属性の値は以下の通りです。1 「ウィンドウの名前」は上のtarget属性の値以外にも、この例のように任意の名前で構いません。
また「ウィンドウの名前」はnullでも結構です。
その場合には1と同じ意味になります。
window.openメソッドの戻り値は、オープンに成功したときはその開いたウィンドウのウィンドウオブジェクト、失敗したときは null を返します。
openメソッドのオプションは以下の通りです。11
ではプログラムの説明をしていきます。
「開く」をクリックするとopenGoogle関数が呼び出されて1が実行されます。
「閉じる」をクリックしますとcloseGoogle関数が呼び出されます。
この関数の中にcloseメソッドを記述しています。
この例のbにはその開いたウィンドウのウィンドウオブジェクトが入っていますので、1で閉じます。1
次はsetIntervalメソッドについて説明します。
一定時間ごとに動作を繰り返す時に使われます。
例えば、指定した時間ごとに文字を出したり消したりできます。1 繰り返し間隔はミリ秒で指定します。その間隔で関数を呼び出し、IntervarIDを返します。
関数はダブルクォートで囲んでください。
では例をみてみましょう。1111 では説明を始めます。1 「start!」をクリックしたらrepeat関数を呼び出しますが
この関数ではカウントするための変数countを作り0を代入しています。
そして、setIntervalメソッドは、指定された時間ごとに指定した関数を呼び出します。
この例の場合は2000ミリ秒ごとにcount1関数を呼び出します。
count1関数内ではcount変数の値を1の箇所で加算します。
この関数は2000ミリ秒ごとに呼び出されるので、その度に1が足されます。
その結果を画面に表示するのが1の部分ですが、ここの説明は後ほど行います。
カウントをクリアにするには初めにsetIntervalメソッドの戻り値のIntervarIDをse変数のような変数に入れます。
その変数をclearIntervalメソッドの引数にすることで、setIntervalメソッドで設定したタイマーを解除することが出来ます。
タイマーの解除は1を押したときに呼び出されるstopメソッドの中で行われます。1 clearIntervalメソッドはsetIntervalにおいて設定したタイマーを解除するメソッドです。
setIntervalメソッドで返ってきたタイマーIDをclearIntervalの引数に入れます。

次は1の部分の説明をします。1 では以下の箇所の説明をします(スペースの都合で2行で書いています)。1 => getElementByIdはdocumentオブジェクトのメソッドで、HTMLの中のID属性の値をgetElementByIdの引数に設定するとそのID属性を持つ要素を取得できます。
この例ではgetElementByIdメソッドの引数に1を設定しているので1の要素を取得します。
「innerHTML」はHTML内の要素の「テキスト」にアクセスできるプロパティですので、先ほどのプログラムは「ID属性の値がabcの箇所にcountの値を埋め込む」という意味です。
説明は以上ですが、簡単な流れを説明しますと1をクリックすると2000ミリ秒ごとにカウントされていきます。
1を押すとclearIntervalメソッドが起動して、タイマーが止まります。1

カテゴリー
JavaScript

様々なオブジェクト(Globalオブジェクト)について知ろう8

この章ではGlobalオブジェクトについて説明します。
Globalオブジェクトはオブジェクトを作成してから使用するオブジェクトではありません。
つまり、1のようにオブジェクトを作ることはありません。
「変数のスコープについて知ろう」で説明したグローバル変数もこのGlobalオブジェクトになります。
つまり、グローバル変数とはGlobalオブジェクトのプロパティという扱いになります。
その他にもJavaScriptに備わっているGlobalオブジェクトの変数やメソッドがありますので以下に紹介します。1111 この中から2例紹介します。
以下の例は数値ではないかどうかを調べるメソッドです。
isNaNメソッドの引数が数値であればfalseになります。1 以下の例ではNumberメソッドで文字列を数値に変換しています。
変換をしないと足し算はできません。1

カテゴリー
JavaScript

変数のスコープについて知ろう

この章では変数のスコープについて説明します。
スコープとはプログラム中で変数を使うことのできる範囲のことを言います。
スコープは2つに分けられ、グローバルスコープローカルスコープがあります。
グローバルスコープは関数の外で宣言された変数でプログラム全体にアクセスすることが可能です。
このような変数をグローバル変数と言います。
ローカルスコープは関数の中で宣言された変数で、関数の実行が終わればその変数のデータは破棄されます(ローカル変数の有効範囲は関数内だけです)。
このような変数をローカル変数と言います。
では例を見てみましょう。1 var a = 23;の変数aは関数の外で宣言しているのでグローバル変数です。
関数の中のvar a=20;の変数a はローカル変数です。
このようにローカル変数とローバル変数は同じ名前を付けることが出来ますが、まったく別の変数として機能します。
1=> test()のようにtest関数を呼び出しているので、この関数が実行されます。
return a;でaを呼び出し元に返していますが、出力される変数は関数内の変数aの値である20です。

1=>ここで出力されるのはグローバル変数a の値である23です。
次は変数にvar を付けなかった場合はどうなるのかを説明します。
以下の例を見てください。1 先ほどの例の変数aからvarを取り除いただけです。
結果は両方とも20になります。関数の中でvarを付けないとその変数はグローバル変数になると言うルールがありますので,どちらの変数aもグローバル変数になります。
ですので、1の所で上書きされてしまいますので、結局出力される値は両方ともaの20ということになります。
結論を言いますとvarは付けなくてもエラーにはなりませんが、すべての変数につけて宣言したほうが思わぬ誤作動をしなくて済むので安全です。

カテゴリー
JavaScript

様々なオブジェクト(argumentsオブジェクト)について知ろう7

この章ではargumentsオブジェクトについて説明します。
argumentsオブジェクトは可変長引数の関数を作りたい時に使用します。
可変長引数の関数とは引数の数を初めから決められている関数ではなくて、後からでも自由に変えられる構造を持った関数です。
関数に渡された引数を1という形式で引き受けて引数の値を保持します。
つまり、argumentsオブジェクトは1を持っています。
argumentsオブジェクトは関数が呼び出されるときに自動的に作成され、呼び出された関数の中でだけ使われます。
では例をみてみましょう。11

1=>実引数4つでkeisan関数を呼び出していますが、argumentsを使うと後から実引数を何個付け足しても、通常の関数のように仮引数を新たに増やす必要はありません。
すべての実引数は1で受け取っています。1=> arguments.lengthと言う形式で実引数の数を取得します。
その引数の数だけ以下のように繰り返し、実引数を取得します。1結果は「100」です。