Javascript関連情報

更新日:2004年03月18日

DOM Samples /Core Node/nodeValue

DOMの仕様にそってサンプルを連載します。今回はNodeインターフェイスのnodeValueです。文字通り、対象ノードの値を取得または設定するのに使います。


JavaScript Samples
Dom編
 

 
nodeValue
説明 :
対象ノードの値
インターフェイス :
/Core/Node
read/write :
対象ノードによる
例外 :
NO_MODIFICATION_ALLOWED_ERR :ノードが読み出し専用のとき
DOMSTRING_SIZE_ERR: 実装されたプラットフォーム上で1つの DOMString変数に収まるサイズを超えたキャラクタを返すことになるとき
Syntax :
oj.nodeValue
値 :
値はそのノードのタイプによって異なる。下表のnodeValue列を参照。
Interface nodeName nodeValue attributes
Attr アトリビュート名( Attr.nameと同じ) 属性値(Attr.valueと同じ) null
CDATASection "#cdata-section" CDATA セクションの内容 (CharacterData.dataと同じ) null
Comment "#comment" コメントの内容 (CharacterData.dataと同じ) null
Document "#document" null null
DocumentFragment "#document-fragment" null null
DocumentType document type 名 DocumentType.name null null
Element タグ名 Element.tagName null NamedNodeMap
Entity エンティティ名 entity name null null
EntityReference 参照されるエンティティ名  entity referenced null null
Notation 表記法名 notation name null null
ProcessingInstruction ターゲット ProcessingInstruction.target ProcessingInstruction.dataと同じ null
Text "#text" テキストノードの内容 (CharacterData.dataと同じ) null

サンプル : 1
ボタンをクリックすると下記「jsGadgetリンク」のAタグ内の各属性値(nodeValue)をダイアログ表示します

<div id="test"><a href="http://jsgt.org/" target="targetWin">jsGadget</a></div>

<form>
  <input type    = "button" 
         value   = "hrefは?"
         onclick = "att1 = getElementById('test').firstChild.attributes ;
                    alert(att1.getNamedItem('href').nodeValue)">
  <input type    = "button" 
         value   = "targetは?"
         onclick = "att1 = getElementById('test').firstChild.attributes ;
                    alert(att1.getNamedItem('target').nodeValue)">
</form>


ここでは、<div id="test">の最初の子ノード(firstChild)であるAタグ内の属性をNamedNodeMapにより取得して 各nodeValueをダイアログ表示しています。

*注意: この場合、もし<div id="test">と<a href=...の間に空白や改行を入れると<a href=...はfirstChildではなくなりますがWinIEだけはそれを無視しますので、互換をとる場合は気をつける必要があります。

ただ、DOMへのアクセス方法は1通りではありません。参考までに下記のような方法やそれ以外にもいろいろなアクセス方法が用意されています。
<div id="test"><a href="http://jsgt.org/" target="targetWin">jsGadget</a></div>

<form>
  <input type="button" 
         value="hrefは?"
         onclick="alert(getElementById('test').firstChild.getAttribute('href'))">
  <input type="button" 
         value="targetは?"
         onclick="alert(getElementById('test').firstChild.getAttribute('target'))">
</form>

<div id="test"><a href="http://jsgt.org/" target="targetWin">jsGadget</a></div>

<form>
  <input type="button" 
         value="hrefは?"
         onclick="alert(getElementById('test').firstChild.href)">
  <input type="button" 
         value="targetは?"
         onclick="alert(getElementById('test').firstChild.target)">
</form>


サンプル : 2
入力フィールドへ書いたURLでAタグのリンク先を書き換えます。

<div id="test2"><a href="javascript:alert('url入力してボタンを押してください')">
     下のフォームに書いたリンク</a></div>

<form>
  <input type     = "text"
         name     = "url2"
         value    = "http://"
         style    = "width : 400px"><br>
  <input type="button" 
         value="リンクを書き換えます"
         onclick="att1 = getElementById('test2').firstChild.attributes ;
                  att1.getNamedItem('href').nodeValue = this.form.url2.value">
</form>
ボタンをクリックすると下記の入力フィールドへ書いたURLでAタグ内のhref属性値(nodeValue)を書き換えます。 最初、何もしない状態でリンクをクリックすると、href="javascript:alert('url入力して...のダイアログが出ますが、 入力フィールドへURLを書いてからボタンクリックすると、このhref="javascript:alert('url入力して...の部分 がURLに書き換わり、クリックするとそのURLが読み込まれます。
サンプル : 3
下記画像にマウスカーソルが触れると画像が変わります。


<script language='JavaScript'>
<!--

  function chgImgSrc(oj,src)
  {
    imgsrc = oj.attributes.getNamedItem('src')
    imgsrc.nodeValue = src
  }

//-->
</script>
下記画像にマウスカーソルが触れると画像が変わります。
<br>
<br>
<img src = "../CU20040306/plus.gif" 
     onmouseover = "chgImgSrc(this,'../CU20040306/minus.gif')"
     onmouseout  = "chgImgSrc(this,'../CU20040306/plus.gif')">

IMGタグの中のonmouseover(カーソルが触れたとき発生),onmouseout(カーソルが離れたとき発生)というイベント ハンドラによって関数chgImgSrc(oj,src)を起動しています。引数ojにはIMGタグ自身がthisによって渡され、引数srcには 書き換えたい画像のURLが渡されます。そして、関数1行目の

oj.attributes.getNamedItem('src')

はIMGタグ(要素)のNamedNodeMap配列attributesの中の「src」属性のNodeをとりだしています。 次に、そのsrcの属性ノードのnodeValueを、引数srcで渡された 画像のURLで書き換えるというわけです。

もちろん、従来のJavaScript的下記のような書き方もDOM-CoreではなくDOM1-HTMLやDOM2-HTMLなどで規定されておりDOM的に?有効です。
<script language='JavaScript'>
<!--

  function chgImgSrc2(oj,src)
  {
    oj.src = src
  }

//-->
</script>
下記画像にマウスカーソルが触れると画像が変わります。
<br>
<br>
<img src = "../CU20040306/plus.gif" 
     onmouseover = "chgImgSrc2(this,'../CU20040306/minus.gif')"
     onmouseout  = "chgImgSrc2(this,'../CU20040306/plus.gif')">

下記画像にマウスカーソルが触れると画像が変わります。 
<img src = "../CU20040306/plus.gif" 
     onmouseover = "this.src='../CU20040306/minus.gif'"
     onmouseout  = "this.src='../CU20040306/plus.gif'">

  • 印刷する
  • ブックマークする
  • 携帯に送る
  • ブログに書く

あわせて読みたい

この記事の担当ガイド

写真

高橋 登史朗

Javascriptをはじめ、Ajax、jQueryの著書多数のガイドが、何かと最近騒がれているJa…

続きを読む

住まいには、人の個性がよく現れるもの。同じ空間をどのように使うかで、雰囲気も、快適さも大きく変わってくる。ここでは、「建築家と家を建てる」ガイド の川畑博哉氏が厳選した10軒を紹介し、建築家それぞれのこだわりのポイントを紹介しよう。建築のプロたちが考え出した、マネしたくなるアイデアが満載! さぁ、いますぐチェック!

人気Javascriptランキング

Powered by 価格.com

デジタル関連コミュニティ

北欧好きが、愛用の北欧モノを見せ合うコミュニティ

メルマガ登録

【デジタルメルマガ】オトナのオトコなら知っておきたい、PCやデジモノに関する情報をお届けします。

ショッピングカタログ

All About ウェブマガジン

女性向け

雨が楽しくなる!レイングッズ15

男性向け

マネしたくなるアイデア住宅

All About モバイル

QRコード

All Aboutがケータイで読める!

オススメ記事をメールでチェック

知識・経験を生かして、記事を書いてみませんか?