Yahoo! : 更新日の新しいページ順に表示

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>Sample</title>
<link rel="stylesheet" href="main.css" type="text/css" media="all">
<script type="text/javascript" src="prototype.js"></script>
<script type="text/javascript"><!--
function YahooCheck()
{
var srchStr = $("queryString").value;
if (srchStr == "")
{
$("result").innerHTML = "検索するキーワードを入れてください";
return;
}
$("result").innerHTML = "検索中...";
$("sendBtn").disabled = true;
url = "yahoo.rb?query="+encodeURI(srchStr)+"&cache="+(new Date()).getTime();
new Ajax.Request(url, { method: 'get', onComplete: displayData });
}
function displayData(httpObj)
{
$("sendBtn").disabled = false;
var TAB = String.fromCharCode(9);
var xmlData = httpObj.responseXML;
var titleTagObj = xmlData.getElementsByTagName("Title");
if (titleTagObj.length == 0)
{
$("result").innerHTML = "何も見つかりませんでした。";
return;
}
var dateTagObj = xmlData.getElementsByTagName("ModificationDate");
var pageURLTagObj = xmlData.getElementsByTagName("ClickUrl");
var txt = "<ul>";
rankList = new Array();
for (var i=0; i<titleTagObj.length; i++)
{
var pageDate = dateTagObj[i].firstChild.nodeValue;
var pageTitle = titleTagObj[i].firstChild.nodeValue;
var pageLink = pageURLTagObj[i].firstChild.nodeValue;
rankList[i] = pageDate + TAB + pageLink + TAB + pageTitle;
}
sortData(0,rankList.length-1,true);
for (i=0; i<rankList.length; i++)
{
var dateObj = new Date(parseInt(rankList[i].split(TAB)[0])*1000);
var y = dateObj.getFullYear();
var m = dateObj.getMonth() + 1;
var d = dateObj.getDate();
txt += "<li> ["+y+"年"+m+"月"+d+"日]";
txt += '<a href="'+rankList[i].split(TAB)[1]+'">'+rankList[i].split(TAB)[2]+'</a>';
}
txt += "</ul>";
$("result").innerHTML = txt;
}
function sortData(start,end,sFlag)
{
var TAB = String.fromCharCode(9);
var x = rankList[Math.floor((start + end) / 2)].split(TAB)[0];
var i = start;
var j = end;
while (true)
{
while (parseInt(rankList[i].split(TAB)[0]) > x) i++;
while (x > parseInt(rankList[j].split(TAB)[0])) j--;
if (i >= j) break;
n = rankList[i];
rankList[i] = rankList[j];
rankList[j] = n;
i++;
j--;
}
if (start < i-1) sortData(start,i-1);
if (j+1 < end) sortData(j+1,end);
}
// --></script>
</head>
<body>
<h1>検索時に更新順に表示</h1>
<p><a href="http://developer.yahoo.co.jp/">Web Services by Yahoo! JAPAN</a></p>
<form method="get" onsubmit="YahooCheck();return false;">
キーワード : <input type="text" value="JavaScript" id="queryString"><br>
<input type="button" id="sendBtn" value="検索" onClick="YahooCheck()">
</form>
<div id="result"></div>
</body>
</html>
・サンプルを実行する
Ajax逆引きクイックリファレンス 説明などは本書を参考にしてください。