DOM(Document Object Model): ElementDOMプロパティ
- attributes[]〔ノードの属性リストを取得〕
- childNodes[]〔子ノードのリストを取得〕
- className〔クラス名の取得・設定〕
- clientWidth/clientHeight〔要素の内部の幅、高さを取得〕
- clientLeft/clientTop〔要素の左ボーダーの幅、上ボーダーの幅を取得〕
- dir〔テキストの方向の取得・設定〕
- firstChild〔最初の子ノードを取得〕
- id〔ID名の取得・設定〕
- innerHTML〔ノード内のHTML要素の取得・設定〕
- innerText / textContent〔ノード内のプレーンテキストの取得・設定〕
- lang〔言語コードの取得・設定〕
- lastChild〔最後の子ノードを取得〕
- localName〔ローカル名の取得〕
- name〔要素のname属性を取得・設定〕
- namespaceURI〔名前空間のURIの取得〕
- previousSibling/nextSibling〔直前・直後にある兄弟ノードを取得 :: Mac風OSメニュー〕
- nodeName〔ノードの名前を取得〕
- nodeType〔ノードの型を取得〕
- nodeValue〔ノードの値を取得〕
- offsetWidth/offsetHeight〔配置に応じた要素の幅・高さを取得〕
- offsetLeft/offsetTop〔要素の左ボーダーから基準要素の左ボーダーまでの距離、要素の上ボーダーから基準要素までの距離〕
- offsetParent〔オフセットの基準となる要素〕
- ownerDocument〔オーナードキュメントを取得〕
- parentNode〔親ノードを取得〕
- prefix〔名前空間の識別子を取得・設定〕
- scrollWidth/scrollHeight〔要素のスクロールビューの幅・高さを取得〕
- scrollLeft/scrollTop〔要素の左スクロールオフセット、上スクロールオフセットを取得・設定〕
- style〔要素のstyle属性の宣言を表すオブジェクトを取得〕
- tagName〔要素名の取得・設定〕
- tabIndex〔要素のタブインデックス番号を取得〕
- title〔タイトル属性の取得・設定〕
attributes[]
ノードの属性リストを取得
unknown
対象ノードがノードの場合にエレメントの属性リストを返し、ノードでない場合はNULLを返します。
特定のimg要素の属性取得
<p><img src="/content/img/pic1-thumb.png" alt="Krispy Kreme Doughnuts" id="sweets" /></p> <form action="#"> <input type="button" value="属性取得" onclick="fGetAttributes()" /> <p id="resGetAttributes"></p> </form> <script type="text/javascript"> function fGetAttributes(){ var s=""; if(document.getElementById("sweets").attributes.length>0){ /* ID名取得 */ s+=document.getElementById("sweets").getAttribute("id")+"<br>"; s+=document.getElementById("sweets").attributes.getNamedItem("id").value+"<br>"; s+=document.getElementById("sweets").attributes.getNamedItem("id").nodeValue+"<br>"; /* ALT属性取得 */ s+=document.getElementById("sweets").getAttribute("alt")+"<br>"; s+=document.getElementById("sweets").attributes.getNamedItem("alt").value+"<br>"; s+=document.getElementById("sweets").attributes.getNamedItem("alt").nodeValue+"<br>"; } document.getElementById("resGetAttributes").innerHTML=s; } </script>
特定のテーブルのボーダーの太さを切り替え

<!-- テーブルの行をストライプに -->
<style type="text/css">
table#atbl th {
border:1px solid #ccc;
background-color:#666;
color:#fff;
}
table#atbl td {
border:1px solid #ccc;
}
table#atbl tr.bg01{
background:#ffffcc;
}
table#atbl tr.bg02{
background:#eee;
}
</style>
<form action="#">
<p><input type="button" onclick="swRowColor()" id="btn_attributes2" value="枠線を太くする" /></p>
</form>
<table border="1" id="atbl">
<caption>《検索サイト》</caption>
<tr>
<th>サイト名</th>
<th>URL</th>
</tr>
<tr>
<td>Yahoo! JAPAN</td>
<td>http://www.yahoo.co.jp/</td>
</tr>
<tr>
<td>Google</td>
<td>http://www.google.co.jp/</td>
</tr>
<tr>
<td>goo</td>
<td>http://www.goo.ne.jp/</td>
</tr>
<tr>
<td>Infoseek</td>
<td>http://www.infoseek.co.jp/</td>
</tr>
</table>
<script type="text/javascript">
function swRowColor(){
var tblObjAry=document.getElementsByTagName("table");
var btnObj=document.getElementById("btn_attributes2");
for (var i=0; i<tblObjAry.length; i++){
var tblObj=tblObjAry[i];
if(tblObj.id=="atbl"){
var tblAttributes=tblObj.attributes;
for (var i=0; i<tblAttributes.length; i++){
if(tblAttributes[i].nodeName.toLowerCase()=="border"){
tblObj.border=(tblObj.border=="10") ? "0" : "10";
btnObj.value=(tblObj.border=="10") ? "枠線なし" : "枠線を太くする";
}
}
}
}
}
</script>
childNodes[]
子ノードのリストを取得
unknown
対象ノードの子ノードのリストを取得します。 子ノードがない場合は、空の子ノードリストを返します。
子ノードの値を取得

<!-- 子ノードの値を取得 -->
<p id="parentP">
DOMとは、<strong>Document Object Model</strong>の略です。
(X)HTMLやXMLのようなツリー構造の文書にアクセスし、操作するための<strong>API</strong>です。
</p>
<form action="#">
<input type="button" value="子ノードリストからSTRONG要素のテキストを取得" onclick="fGetChildNodes()" />
</form>
<ul id="resGetChildNodes"></ul>
<script type="text/javascript">
function fGetChildNodes(){
var s=""
var parentObj=document.getElementById("parentP");
for(var i in parentObj.childNodes){
var childObj=parentObj.childNodes[i];
if(childObj!=null && childObj.nodeName=="STRONG"){
s+="<li>"+childObj.firstChild.nodeValue+"</li>";
}
}
document.getElementById("resGetChildNodes").innerHTML=s;
}
</script>
DOMとは、Document Object Modelの略です。 (X)HTMLやXMLのようなツリー構造の文書にアクセスし、操作するためのAPIです。
リンク先の拡張子アイコンを表示

<style type="text/css"> ul#addLinkIcons li a { border:0; text-decoration:none; } ul#addLinkIcons li a img { vertical-align:middle; } </style> <form action="#"> <!-- 通常はwindow.onloadイベントでページが読み込まれたときに実行 --> <p><input type="button" value="リンク先の拡張子アイコンを表示" onclick="fAddLinkIcons()" /></p> </form> <ul id="addLinkIcons"> <li><a href="/content/demo/sample.pdf">PDFファイルへのリンク</a></li> <li><a href="/content/demo/sample.xml">XMLファイルへのリンク</a></li> <li><a href="/content/demo/sample.rdf">RSS Feedへのリンク</a></li> <li><a href="/content/demo/sample.xls">Excelファイルへのリンク</a></li> <li><a href="/content/demo/sample.jpg">画像ファイルへのリンク</a></li> <li><a href="/content/demo/sample.zip">圧縮ファイルへのリンク</a></li> </ul> <script type="text/javascript"> var done_fAddLinkIcons=false; function fAddLinkIcons(){ /* UL要素 */ var ulObj=document.getElementById("addLinkIcons"); if(!done_fAddLinkIcons){ done_fAddLinkIcons=true; }else{ return false; } for(var i in ulObj.childNodes){ /* LI要素 */ var liObj=ulObj.childNodes[i]; if(liObj!=null && liObj.nodeName=="LI"){ for(var j in liObj.childNodes){ /* A要素 */ var aObj=liObj.childNodes[j]; if(aObj!=null && aObj.nodeName=="A"){ /* A要素のhref属性取得 */ var aHref=aObj.getAttribute("href"); if(aHref!=""){ /* IMG要素生成 */ var imgObj=document.createElement("IMG"); var fType=""; if(aHref.indexOf(".pdf")>-1){ fType="pdf"; }else if(aHref.indexOf(".xml")>-1){ fType="xml"; }else if(aHref.indexOf(".rdf")>-1){ fType="feed"; }else if(aHref.indexOf(".xls")>-1 || aHref.indexOf(".xlsx")>-1){ fType="xls"; }else if(aHref.indexOf(".jpg")>-1 || aHref.indexOf(".gif")>-1 || aHref.indexOf(".png")>-1){ fType="image"; }else if(aHref.indexOf(".zip")>-1 || aHref.indexOf(".lzh")>-1){ fType="zip"; } /* IMG要素のsrc属性に拡張子アイコン画像URLを設定 */ imgObj.setAttribute("src","/content/img/icon/file/icon_"+fType+".gif"); /* A要素の子ノードリストの先頭に生成したIMG要素を連結 */ /* 末尾に加える場合は aObj.appendChild(imgObj) */ aObj.insertBefore(imgObj, aObj.firstChild); } } } } } } </script>
className
クラス名の取得・設定
unknown
対象ノードのクラス名を取得・設定します。
回答部分のの開閉(子ノードのクラス名を入替)

<!-- 回答部分のの開閉(子ノードのクラス名を入替) --> <style type="text/css"> dl#faqList dt { font-weight:bold; } dl#faqList dd.openclose { margin:10px 10px 20px 20px; display:block; } dl#faqList dd.close { margin:10px 10px 20px 20px; display:none; } </style> <form action="#"> <input type="button" onclick="fTglAnswer()" id="btnOpenClose" value="回答を閉じる" /> </form> <dl id="faqList"> <dt>質問1</dt> <dd class="open">回答1</dd> <dt>質問2</dt> <dd class="open">回答2</dd> </dl> <script type="text/javascript"> function fTglAnswer(){ /* 親ノードを格納 */ var parenObj=document.getElementById("faqList"); /* ボタンオブジェクトを格納 */ var btnObj=document.getElementById("btnOpenClose"); for(var i in parenObj.childNodes){ /* 子ノードを格納 */ var childObj=parenObj.childNodes[i]; if(childObj.tagName=="DD"){ /* クラス名取得 */ if(childObj.className=="open"){ /* クラス名設定 */ childObj.className="close"; btnObj.value="回答を開く"; }else{ childObj.className="open"; btnObj.value="回答を閉じる"; } } } } </script>
- 質問1
- 回答1
- 質問2
- 回答2
テーブルの行をストライプに

<!-- テーブルの行をストライプに -->
<style type="text/css">
table.stripe {
border:0;
border-spacing:0;
border-collapse:collapse;
margin:0; padding:0;
}
table.stripe th {
border:1px solid #ccc;
background-color:#666;
color:#fff;
}
table.stripe td {
border:1px solid #ccc;
}
table.stripe tr.bg02{
background:#eee;
}
</style>
<form action="#">
<input type="button" onclick="fStripeTable()" value="行をストライプにする" />
</form>
<br>
<table class="stripe">
<caption>《検索サイト》</caption>
<tr>
<th>サイト名</th>
<th>URL</th>
</tr>
<tr>
<td>Yahoo! JAPAN</td>
<td>http://www.yahoo.co.jp/</td>
</tr>
<tr>
<td>Google</td>
<td>http://www.google.co.jp/</td>
</tr>
<tr>
<td>goo</td>
<td>http://www.goo.ne.jp/</td>
</tr>
<tr>
<td>Infoseek</td>
<td>http://www.infoseek.co.jp/</td>
</tr>
</table>
<script type="text/javascript">
function fStripeTable(){
var tblObjAry=document.getElementsByTagName("table");
for (var i=0; i<tblObjAry.length; i++){
var tblObj=tblObjAry[i];
if(tblObj.className=="stripe"){
var rows=tblObj.getElementsByTagName("tr");
for (var i=1; i<rows.length; i++){
rows[i].className="bg02";
i++;
}
}
}
}
</script>
サイト名 | URL |
---|---|
Yahoo! JAPAN | http://www.yahoo.co.jp/ |
http://www.google.co.jp/ | |
goo | http://www.goo.ne.jp/ |
Infoseek | http://www.infoseek.co.jp/ |
clientWidth/clientHeight
要素の内部の幅、高さを取得
unknown
エレメント.clientHeight ->数値(px)
clientLeft/clientTop
要素の左ボーダーの幅、上ボーダーの幅を取得
unknown
エレメント.clientTop -> 数値(px)
dir
テキストの方向の取得・設定
unknown
対象ノードのテキスト・ディレクション(書字方向)を取得・設定します。
対象ノードのテキスト・ディレクションを取得・設定

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang='ja'> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>対象エレメントのテキスト・ディレクションを取得・設定</title> </head> <body id="myBody" dir="rtl"> <script type="text/javascript"> document.write("Text direction: "+document.getElementsByTagName('body')[0].dir+"<br>"); document.write("An alternate way: "+document.getElementById('myBody').dir+"<br>"); </script> </body> </html>
firstChild
最初の子ノードを取得
unknown
対象ノードの最初の子ノードを取得します。
以下のように改行を含めて記述した場合、Firefoxでは改行も1つのノードとして扱われるので#textが返ります。
<ul> <li>りんご</li> ...
以下のように改行を含めなければli要素が返ります。
<ul><li>りんご</li> ...
ブラウザおよびそのバージョンによって差異がありますのでfirstChildを使う場合は注意が必要です。 クロスブラウザ対応にするには、childNodesプロパティを使いましょう。


<ul id="fruitNodes2"> <li>リンゴ</li> <li>オレンジ</li> <li>バナナ</li> </ul> <form action="#"> <input type="button" value="firstChildを取得" onclick="fGetfirstChild()" /> <p id="resGetfirstChild"></p> </form> <script type="text/javascript"> function fGetfirstChild(){ var s=""; var parentObj=document.getElementById("fruitNodes2"); var firstChildObj=parentObj.firstChild; if(firstChildObj!=null){ s+="nodeName: "+firstChildObj.nodeName+"<br>"; if(navigator.userAgent.indexOf("MSIE")>-1){ /* IE */ s+="innerText: "+firstChildObj.innerText+"<br>"; }else{ /* Firefox */ s+="textContent: "+firstChildObj.textContent+"<br>"; } } document.getElementById("resGetfirstChild").innerHTML=s; } </script>
- リンゴ
- オレンジ
- バナナ
id
ID名の取得・設定
unknown
対象ノードのID名を取得・設定します。
<!-- 親要素(div#hoge1)鋸要素のID名を取得 -->
<div id="hoge1">
<div id="hoge1-1">ほげ1-1</div>
<div id="hoge1-2">ほげ1-2</div>
</div>
<form action="#">
<p><input type="button" value="ID名取得" onclick="fGetIDName()" /></p>
</form>
<script type="text/javascript">
function fGetIDName(){
var s="";
var parentObj=document.getElementById("hoge1");
for(var i in parentObj.childNodes){
var childObj=parentObj.childNodes[i];
if(childObj.id!=undefined){
s+=childObj.id+"<br>";
}
}
document.getElementById("reshoge").innerHTML=s;
}
</script>
<p id="reshoge"></p>
innerHTML
ノード内のHTML要素の取得・設定
unknown
対象ノード内のHTML文を取得・設定します。
HTMLタグを含めずにプレーンテキストのみ取得・設定したい場合は、innerText/textContentを使用します。
<ul id="searchLinks"> <li><a href="http://www.yahoo.co.jp">Yahoo! Japan</a></li> <li><a href="http://www.google.co.jp">Google</a></li> </ul> <form action="#"> <input type="button" value="innerHTMLを取得" onclick="fGetInnerHTML()" /> <p id="resGetInnerHTML"></p> </form> <script type="text/javascript"> function fGetInnerHTML(){ var s=""; var parentObj=document.getElementById("searchLinks"); for(var i in parentObj.childNodes){ var childObj=parentObj.childNodes[i]; if(childObj.nodeName=="LI"){ s+="innerHTML: "+childObj.innerHTML+"<br>"; } } document.getElementById("resGetInnerHTML").innerHTML=s; } </script>
<!-- 時間帯によってメッセージを変える -->
<div id="message"></div>
<script type="text/javascript">
var username="hoge";
var greeting=["おはようございます","こんにちは","こんばんは"];
var now=new Date();
var hour=now.getHours();
var str="";
if(hour>4 && hour<12){
str=greeting[0];
}else if(hour<18){
str=greeting[1];
}else{
str=greeting[2];
}
if(document.getElementById("message")){
document.getElementById("message").innerHTML="<p>"+str+"、"+username+"さん<\/p>";
}
</script>
innerText / textContent
ノード内のプレーンテキストの取得・設定
unknown
エレメント.textContent = 文字列
対象ノードのプレーンテキストを取得・設定します。 IEではinnerTextプロパティ、FirefoxではtextContentプロパティを使用します。
取得できるのはテキスト部分のみで、HTMLタグは無視されます。 HTMLタグを含める場合は、innerHTMLプロパティを使用します。
<ul id="fruitNodes"> <li><strong>リンゴ</strong></li> <li></li> <li><em>オレンジ</em></li> <li><a href="#">バナナ</a></li> <li></li> </ul> <form action="#"> <input type="button" value="プレーンテキストを取得" onclick="fGetPlaneText()" /> <p id="resGetPlaneText"></p> </form> <script type="text/javascript"> function fGetPlaneText(){ var s=""; var parentObj=document.getElementById("fruitNodes"); for(var i in parentObj.childNodes){ var childObj=parentObj.childNodes[i]; if(childObj.nodeName=="LI"){ if(navigator.userAgent.indexOf("MSIE")>-1){ /* IE */ s+="innerText: "+childObj.innerText+"<br>"; }else{ /* Firefox */ s+="textContent: "+childObj.textContent+"<br>"; } } } document.getElementById("resGetPlaneText").innerHTML=s; } </script>
- リンゴ
- オレンジ
- バナナ
lang
言語コードの取得・設定
unknown
対象ノードの言語コードを取得・設定します。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang='ja'> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>対象エレメントの言語コードを取得・設定</title> </head> <body> <script type="text/javascript"> /* 言語コード取得 */ document.write("Content Language: "+document.getElementsByTagName('html')[0].lang+"<br \/>"); /* 言語コードを"en-us"に設定 */ document.getElementsByTagName('html')[0].lang="en-us"; document.write("Content Language: "+document.getElementsByTagName('html')[0].lang+"<br \/>"); </script> </body> </html>
lastChild
最後の子ノードを取得
unknown
対象ノードの最後の子ノードを取得します。
以下のように改行を含めて記述した場合、Firefoxでは改行も1つのノードとして扱われるので#textが返ります。
<ul> <li>りんご</li> ...
以下のように改行を含めなければli要素が返ります。
<ul><li>りんご</li> ...
このように、IE以外のブラウザでlastChildを使う場合は注意が必要です。 クロスブラウザ対応にするには、childNodesプロパティを使いましょう。
<ul id="fruitNodes3"> <li>リンゴ</li> <li>オレンジ</li> <li>バナナ</li> </ul> <form action="#"> <input type="button" value="lastChildを取得" onclick="fGetLastChild()" /> <p id="resGetLastChild"></p> </form> <script type="text/javascript"> function fGetLastChild(){ var s=""; var parentObj=document.getElementById("fruitNodes3"); var lastChildObj=parentObj.lastChild; if(lastChildObj!=null){ s+="nodeName: "+lastChildObj.nodeName+"<br>"; if(navigator.userAgent.indexOf("MSIE")>-1){ /* IE */ s+="innerText: "+lastChildObj.innerText+"<br>"; }else{ /* Firefox */ s+="textContent: "+lastChildObj.textContent+"<br>"; } } document.getElementById("resGetLastChild").innerHTML=s; } </script>
- リンゴ
- オレンジ
- バナナ
localName
ローカル名の取得
unknown
対象ノードの名前空間の識別子を除いたローカル名を取得・設定します。 (X)HTMLの場合は、対象ノードのノード名が返ります。
<div id="hogediv">div要素です。</div> <form action="#"> <p><input type="button" value="ローカル名取得" onclick="fGetLocalName()" /></p> <p id="resGetLocalName"></p> </form> <script type="text/javascript"> function fGetLocalName(){ var s=""; s+="localName: "+document.getElementById("hogediv").localName+"<br>"; document.getElementById("resGetLocalName").innerHTML=s; } </script>
name
要素のname属性を取得・設定
unknown
<input type="text" name="username" id="username" /> <script type="text/javascript"> document.getElementById("username").value=document.getElementById("username").name; </script>
namespaceURI
名前空間のURIの取得
unknown
対象ノードの名前空間のURIを取得・設定します。 指定されていない場合はNULLを返します。
<div id="hogediv2">div要素です。</div> <form action="#"> <p><input type="button" value="名前空間のURI取得" onclick="fGetNameSpaceURI()" /></p> <p id="resGetNameSpaceURI"></p> </form> <script type="text/javascript"> function fGetNameSpaceURI(){ var s=""; s+="namespaceURI: "+document.getElementById("hogediv2").namespaceURI+"<br>"; document.getElementById("resGetNameSpaceURI").innerHTML=s; } </script>
previousSibling/nextSibling
直前・直後にある兄弟ノードを取得 :: Mac風OSメニュー
unknown
ノード.nextSibling -> 次のノード
previousSiblingプロパティは、対象ノードの直前にある兄弟ノードを取得します。 nextSiblingプロパティは、対象ノードの直後にある兄弟ノードを取得します。 兄弟ノードがない場合は、共にNULLを返します。
<form action="#"> <p> <span id="Brothers"><strong>Brother</strong><em>(兄弟)</em></span> <input type="button" value="最初の子ノードの次のノード名を取得" onclick="fGetBrothers()" /> </p> <p id="resGetBrothers"></p> </form> <script type="text/javascript"> function fGetBrothers(){ var s=""; var parentObj=document.getElementById("Brothers"); var firstChildObj=parentObj.firstChild; s+=firstChildObj.nextSibling.nodeName+"<br>"; document.getElementById("resGetBrothers").innerHTML=s; } </script>
Mac OS 風のメニューを作ってみました。 IEとFirefoxではノードの挙動が違う(Firefoxは#textもノードとして扱う)ので、処理を分岐する必要があります。 もっとすっきりかけると思いますが、あしからずw
<style type="text/css"> ul#macmenu { list-style:none; margin:0; padding:0; zoom:100%; height:140px; } ul#macmenu:after { height: 0; visibility: hidden; content: "."; display: block; clear: both; } ul#macmenu li { margin:0; padding:0; display:block; float:left; } ul#macmenu li img.defsize { width:64px; height:64px; } </style> <script type="text/javascript"> var defsize='64px'; var prevnextsize='80px'; var zoomsize='128px'; /* アイコンを拡大表示 */ function fZoomIcon(id){ var ie=false; if(navigator.userAgent.indexOf("MSIE")>-1){ ie=true; } var Obj=document.getElementById(id); for(var i in Obj.childNodes){ if(Obj.childNodes[i].nodeName=="IMG"){ var imgObj=Obj.childNodes[i]; imgObj.style.width=zoomsize; imgObj.style.height=zoomsize; } } var nextObj=""; var prevObj=""; if(ie==true){ /* IE */ if(Obj.nextSibling!=null && Obj.nextSibling.nodeName=="LI"){ var nextObj=Obj.nextSibling; } if(Obj.previousSibling!=null && Obj.previousSibling.nodeName=="LI"){ var prevObj=Obj.previousSibling; } }else{ /* Firefox */ if(Obj.nextSibling.nextSibling!=null && Obj.nextSibling.nextSibling.nodeName=="LI"){ var nextObj=Obj.nextSibling.nextSibling; } if(Obj.previousSibling.previousSibling!=null && Obj.previousSibling.previousSibling.nodeName=="LI"){ var prevObj=Obj.previousSibling.previousSibling; } } if(nextObj!=""){ for(var i in nextObj.childNodes){ if(nextObj.childNodes[i].nodeName=="IMG"){ var imgObj=nextObj.childNodes[i]; imgObj.style.width=prevnextsize; imgObj.style.height=prevnextsize; } } } if(prevObj!=""){ for(var i in prevObj.childNodes){ if(prevObj.childNodes[i].nodeName=="IMG"){ var imgObj=prevObj.childNodes[i]; imgObj.style.width=prevnextsize; imgObj.style.height=prevnextsize; } } } } /* アイコンを縮小表示 */ function fDefaultIcon(id) { var ie=false; if(navigator.userAgent.indexOf("MSIE")>-1){ ie=true; } var Obj=document.getElementById(id); for(var i in Obj.childNodes){ if(Obj.childNodes[i].nodeName=="IMG"){ var imgObj=Obj.childNodes[i]; imgObj.style.width=defsize; imgObj.style.height=defsize; } } var nextObj=""; var prevObj=""; if(ie==true){ /* IE */ if(Obj.nextSibling!=null && Obj.nextSibling.nodeName=="LI"){ var nextObj=Obj.nextSibling; } if(Obj.previousSibling!=null && Obj.previousSibling.nodeName=="LI"){ var prevObj=Obj.previousSibling; } }else{ /* Firefox */ if(Obj.nextSibling.nextSibling!=null && Obj.nextSibling.nextSibling.nodeName=="LI"){ var nextObj=Obj.nextSibling.nextSibling; } if(Obj.previousSibling.previousSibling!=null && Obj.previousSibling.previousSibling.nodeName=="LI"){ var prevObj=Obj.previousSibling.previousSibling; } } if(nextObj!=""){ for(var i in nextObj.childNodes){ if(nextObj.childNodes[i].nodeName=="IMG"){ var imgObj=nextObj.childNodes[i]; imgObj.style.width=defsize; imgObj.style.height=defsize; } } } if(prevObj!=""){ for(var i in prevObj.childNodes){ if(prevObj.childNodes[i].nodeName=="IMG"){ var imgObj=prevObj.childNodes[i]; imgObj.style.width=defsize; imgObj.style.height=defsize; } } } } </script> <ul id="macmenu"> <li id="macmenu_os" onmouseover="fZoomIcon(this.id)" onmouseout="fDefaultIcon(this.id)"><img src="/content/img/js/xpico_os.gif" class="defsize" /></li> <li id="macmenu_dust" onmouseover="fZoomIcon(this.id)" onmouseout="fDefaultIcon(this.id)"><img src="/content/img/js/xpico_dust.gif" class="defsize" /></li> <li id="macmenu_ie" onmouseover="fZoomIcon(this.id)" onmouseout="fDefaultIcon(this.id)"><img src="/content/img/js/xpico_ie.gif" class="defsize" /></li> <li id="macmenu_photo" onmouseover="fZoomIcon(this.id)" onmouseout="fDefaultIcon(this.id)"><img src="/content/img/js/xpico_photo.gif" class="defsize" /></li> <li id="macmenu_video" onmouseover="fZoomIcon(this.id)" onmouseout="fDefaultIcon(this.id)"><img src="/content/img/js/xpico_video.gif" class="defsize" /></li> <li id="macmenu_music" onmouseover="fZoomIcon(this.id)" onmouseout="fDefaultIcon(this.id)"><img src="/content/img/js/xpico_music.gif" class="defsize" /></li> </ul>
nodeName
ノードの名前を取得
unknown
対象ノードのノード名を大文字で返します。 ノードが空の場合、取得できない場合にundefinedを返します。
<!-- 子要素(dd)を開閉 -->
<form action="#">
<input type="button" value="回答を開く" onclick="fTglOpen('open')" />
<input type="button" value="回答を閉じる" onclick="fTglOpen('close')" />
</form>
<dl id="faq">
<dt>質問1</dt>
<dd>回答1</dd>
<dt>質問2</dt>
<dd>回答2</dd>
</dl>
<script type="text/javascript">
function fTglOpen(tgl){
var qObj=document.getElementById("faq");
var s="";
for(var i in qObj.childNodes){
var aObj=qObj.childNodes[i];
if(aObj.nodeName=="DD"){
if(tgl!="open"){
aObj.style.display="none";
}else{
aObj.style.display="block";
}
}
}
}
</script>
- 質問1
- 回答1
- 質問2
- 回答2
nodeType
ノードの型を取得
unknown
対象ノードの型番号を数字で取得します。 対象のノードが不明の場合は、undefinedを返します。
型 | 説明 |
---|---|
1 | Element(エレメント) |
2 | Attribute(属性) |
3 | Text(テキスト) |
4 | CDATA Section(CDATAセクション) |
5 | Entity Reference(エンティティリファレンス) |
6 | Entity(エンティティ) |
7 | Processing Instruction(処理命令) |
8 | Comment(コメント) |
9 | Document(ドキュメント) |
10 | Document Type(ドキュメントタイプ) |
11 | Document Fragment(ドキュメントフラグメント) |
12 | Notation(記述) |
<!-- ノードの型を調べる --> <form action="#"> <p><input type="button" value="ノードの型を表示" onclick="fGetNodeType()" /></p> <pre id="nodeTypeLis"></pre> </form> <div id="nList"> <!-- コメント --> <span>テキスト</span> </div> <script type="text/javascript"> function fGetNodeType(){ var parentObj=document.getElementById("nList"); var s=""; for(var i in parentObj.childNodes){ var childObj=parentObj.childNodes[i]; if(childObj.nodeType!=undefined){ s+=childObj.nodeType+"\n"; } } document.getElementById("nodeTypeLis").innerHTML=s; } </script>
nodeValue
ノードの値を取得
unknown
<!-- テキストエリアに何も入力されていない場合は警告メッセージ表示&テキストボックスにフォーカスを当てる 送信ボタンをクリックした時に、ボタンの値とスタイルを替える(二重送信防止) --> <form action="#" name="testform"> <p> <input type="text" id="txtBox" size="30" /> <input type="button" value="送信" onclick="fChgSubmitBtn()" id="btnSubmit" /> </p> <p id="errMessage"></p> </form> <script type="text/javascript"> function fChgSubmitBtn(){ var s=""; var btnObj=document.getElementById("btnSubmit"); var txtObj=document.getElementById("txtBox"); if(txtObj.value==""){ document.getElementById("errMessage").innerHTML="<span style='color:red;'>※入力してください。<\/span>"; txtObj.focus(); }else{ //document.testform.submit(); /* サンプルなので送信処理はコメントアウト */ btnObj.value="送信しました"; btnObj.disabled=true; } } </script>
offsetWidth/offsetHeight
配置に応じた要素の幅・高さを取得
unknown
エレメント.offsetHeight -> 数値(px)
<div id="elmoff_wh" style="border:1px solid orange; padding:10px;"></div> <script type="text/javascript"> document.getElementById("elmoff_wh").innerHTML="要素の幅:"+document.getElementById("elmoff_wh").offsetWidth+"<br>要素の幅:"+document.getElementById("elmoff_wh").offsetHeight; </script>
offsetLeft/offsetTop
要素の左ボーダーから基準要素の左ボーダーまでの距離、要素の上ボーダーから基準要素までの距離
unknown
エレメント.offsetTop -> 数値(px)
<div id="elmoff_lt" style="border:1px solid orange;"></div> <script type="text/javascript"> document.getElementById("elmoff_lt").innerHTML="要素の左ボーダーから基準要素の左ボーダーまでの距離:"+document.getElementById("elmoff_lt").offsetLeft+"<br>要素の上ボーダーから基準要素の左ボーダーまでの距離:"+document.getElementById("elmoff_lt").offsetTop; </script>
offsetParent
オフセットの基準となる要素
unknown
<input type="text" id="txtchild" /> <script type="text/javascript"> document.getElementById("txtchild").value=document.getElementById("txtchild").offsetParent.nodeName; </script>
ownerDocument
オーナードキュメントを取得
unknown
対象ノードに関連付けられたドキュメントを取得します。 対象ノードがドキュメントの場合はNULLを返します。
<form action="#"> <input type="button" value="document.bodyのオーナードキュメントを取得" onclick="fGetOwnerDocument()" /> <p id="resGetOwnerDocument"></p> </form> <script type="text/javascript"> function fGetOwnerDocument(){ var s=""; var OwnerObj=document.body.ownerDocument; s+="Object: "+OwnerObj+"<br>"; s+="nodeType: "+OwnerObj.nodeType+"<br>"; s+="nodeName: "+OwnerObj.nodeName+"<br>"; s+="nodeValue: "+OwnerObj.nodeValue+"<br>"; document.getElementById("resGetOwnerDocument").innerHTML=s; } </script>
parentNode
親ノードを取得
unknown
対象ノードの親ノードを取得します。
<input type="button" value="親ノードの情報を取得" onclick="fGetParentNode(this.id)" id="myBtn" /> <p id="resGetParentNode"></p> <script type="text/javascript"> function fGetParentNode(id){ var s=""; var childObj=document.getElementById(id); var parentObj=childObj.parentNode; s+="nodeName: "+parentObj.nodeName+"<br>"; s+="nodeType: "+parentObj.nodeType+"<br>"; s+="tagName: "+parentObj.tagName+"<br>"; s+="className: "+parentObj.className+"<br>"; document.getElementById("resGetParentNode").innerHTML=s; } </script>
prefix
名前空間の識別子を取得・設定
unknown
対象ノードの名前空間の識別子を取得します。 指定されていない場合はNULLを返します。
scrollWidth/scrollHeight
要素のスクロールビューの幅・高さを取得
unknown
エレメント.scrollHeight -> 数値;
scrollLeft/scrollTop
要素の左スクロールオフセット、上スクロールオフセットを取得・設定
unknown
エレメント.scrollTop = 数値;
style
要素のstyle属性の宣言を表すオブジェクトを取得
unknown
tagName
要素名の取得・設定
unknown
対象ノードの要素名を取得・設定します。
<style type="text/css"> div#sampleCode { margin:0; padding:0; } div#sampleCode pre { margin:0; padding:1em; display:none; color:#fff; background-color:#666; font-family:monospace; font-size:10px; letter-spacing:1px; line-height:1.22em; } </style> <div id="sampleCode"> <a href="javascript:fOpenCloseSource();">▼サンプルコード表示</a> <pre><script type="text/javascript"> function fGetYYYYMMDD(){ var now=new Date(); var nowY=now.getFullYear(); var nowM=now.getMonth()+1; var nowD=now.getDay(); return nowY+"/"+nowM+"/"+nowD; } </script></pre> </div> <script type="text/javascript"> function fOpenCloseSource(){ var parentObj=document.getElementById("sampleCode"); var preObj=""; var aObj=""; for(var i in parentObj.childNodes){ var childObj=parentObj.childNodes[i]; if(childObj.tagName=="PRE"){ preObj=childObj; }else if(childObj.tagName=="A"){ aObj=childObj; } } if(preObj!="" && aObj!=""){ if(preObj.style.display=="block"){ preObj.style.display="none"; aObj.innerHTML="▼サンプルコード表示"; }else{ preObj.style.display="block"; aObj.innerHTML="▲サンプルコード非表示"; } } } </script>
<script type="text/javascript"> function fGetYYYYMMDD(){ var now=new Date(); var nowY=now.getFullYear(); var nowM=now.getMonth()+1; var nowD=now.getDay(); return nowY+"/"+nowM+"/"+nowD; } </script>
tabIndex
要素のタブインデックス番号を取得
unknown
title
タイトル属性の取得・設定
unknown
対象ノードのTITLE属性を取得・設定します。
リンクのtitle属性取得
<ul id="urlLists"> <li><a href="http://phpjavascriptroom.com/" title="PHP & JavaScript Roomを開きます">PHP & JavaScript Room</a></li> <li><a href="http://www.yahoo.co.jp" title="Yahoo! Japanを開きます">Yahoo! JAPAN</a></li> <li><a href="http://www.google.co.jp" title="Googleを開きます">Google</a></li> </ul> <form action="#"> <input type="button" value="リンクのtitle属性の値を取得" onclick="fGetAnchorTitle()" /> <p id="resGetAnchorTitle"></p> </form> <script type="text/javascript"> function fGetAnchorTitle(){ var s=""; /* 親ノード(UL) */ var parentObj=document.getElementById("urlLists"); for(var i in parentObj.childNodes){ /* 子ノード(LI)*/ var childObj=parentObj.childNodes[i]; if(childObj.nodeName=="LI"){ /* 子ノード(LI)の最初の子ノード(A) */ s+=childObj.firstChild.title+"<br>"; } } document.getElementById("resGetAnchorTitle").innerHTML=s; } </script>
画像キャプション表示
<form action="#"> <p><input type="button" value="画像キャプション表示" onclick="fShowGazoCap()" /></p> </form> <ul id="ThmbnailLinks"> <li><a href="/content/img/pic1.png" title="Krispy Kreme Doughnuts by 有楽町丸井★"><img src="/content/img/pic1-thumb.png" alt="pic1" /></a></li> <li><a href="/content/img/pic2.png" title="クマさんケーキ by 新宿ALTA★"><img src="/content/img/pic2-thumb.png" alt="pic2" /></a></li> <li><a href="/content/img/pic3.png" title="すごい肉 by 牛兵衛 渋谷店★"><img src="/content/img/pic3-thumb.png" alt="pic3" /></a></li> </ul> <script type="text/javascript"> var done_fShowGazoCap=false; function fShowGazoCap(){ if(!done_fShowGazoCap){ done_fShowGazoCap=true; }else{ return false; } var ulObj=document.getElementById("ThmbnailLinks"); for(var i in ulObj.childNodes){ var liObj=ulObj.childNodes[i]; if(liObj!=null && liObj.nodeName=="LI"){ for(var j in liObj.childNodes){ var aObj=liObj.childNodes[j]; if(aObj!=null && aObj.nodeName=="A"){ var aTitle=aObj.title; if(aTitle!=""){ var addObj=aObj.appendChild(document.createElement("span")); addObj.innerHTML=aTitle; } } } } } } </script>