<script type="text/javascript">
<!--
/*==========================================================
//クロスブラウザ load関数
引数 : url XMLファイルのurl
func 読み込み成功時の起動関数名
戻値 : 読み込まれたXMLノードツリー
例 : loadFile( 'data.xml', func1 )
function func1(){alert('test')}
Support http://game.gr.jp/js/
*/
function loadFile(url,func)
{
if(document.getElementById){
if (window.ActiveXObject)
{
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async = false
if(xmlDoc.load(url)){func(xmlDoc)}
} else if ( document.implementation &&
document.implementation.createDocument )
{
var xmlDoc = document.implementation.createDocument("","",null)
xmlDoc.onload = function (){func(xmlDoc)}
xmlDoc.load(url)
}
return xmlDoc
}
}
/*==========================================================*/
//読み込んだXMLのデータをもとにHTMLへ書き出す
function writeXMLData(xdoc)
{
var listLen = 10 //表示件数 wktitle.length
//XML内の"title"という名前のタグの配列を作る
var wktitle = xdoc.getElementsByTagName("title")
//書き出すためのdivを作っておく
document.body.removeChild(document.body.firstChild)
var wkdiv = document.body.insertBefore(
document.createElement("div"), document.body.firstChild)
//"title"タグが出てきた順に処理する
for( i = 1 ; i < listLen + 1 ; i++ )
{
if ( wktitle.length <= i ) break;
//urlを取り出す
var wklink = xdoc.getElementsByTagName("link")[i]
var wklinkHref = wklink.attributes.getNamedItem("href").nodeValue
//各タグ内のfirstChildのデータだけをinnerHTMLで書き出す
wkdiv.innerHTML += '<a href="'+ wklinkHref +'"><font size=-1>'
+ wktitle[i].firstChild.nodeValue
+ '</font></a><br>'
}
wkdiv.innerHTML += '<hr>'
}
//-->
</script>
<div id="dmy">ブログタイトルを読み込みます</div>
<input type = "button"
value = "ブログタイトル読み込み 最新の10件"
onclick= "loadFile('http://jsgt.org/mt/01/atom.xml',writeXMLData)">
★2004.6.21ちょっと修正 コメントを参照してください
http://jsgt.org/mt/mt-comments.cgi?entry_id=47
投稿者 tato : 2004年06月20日 13:37
| トラックバック
divがすでにあれば削除する
document.body.removeChild(document.body.firstChild)
の部分があんまりにも手抜きなので修正しました。
このままだとdocument.body.firstChildを何が何でも削除してしまい汎用性に欠けるので、divに名前をつけて明示的に削除するという方法に変えました。
//書き出すためのdivを作っておく
if(document.getElementById("writeXMLDataDiv")){
//divがすでにあれば削除
document.body.removeChild(
document.getElementById("writeXMLDataDiv")
)
}
//div作成
wkdiv = document.body.insertBefore(
document.createElement("div"), document.body.firstChild
)
//命名する
wkdiv.setAttribute("id","writeXMLDataDiv")