เกี่ยวกับบทความ Rss xml ครับ
function LoadXMLDoc(url, handler, language) {
document.getElementById(handler).innerHTML="Loding...";
var req=Inint_AJAX();
if (req!=null) {
req.onreadystatechange=function() {
if (req.readyState==4) {
if (req.status==200) {
xml=req.responseXML;
parseFeed(req.responseXML, handler);
}
}
};
req.open("GET", "rss.php?feed="+url+"&lang="+language, true);
req.send(null);
}
}
function parseFeed(xml, handler) {
//อ่านหัวข้อของเอกสารออกมา
var _title = xml.getElementsByTagName('title')[0].firstChild.data; //<title>
var _link = xml.getElementsByTagName('link')[0].firstChild.data; //<link>
var _description = xml.getElementsByTagName('description')[0].firstChild.data; //<description>
var header="<a href='"+_link+"' target='_blank' title='"+_description+"' class='header'>"+_title+"</a>";
var _logo="";
if(checkForTag(xml.getElementsByTagName('image')[0])) {
var _url=xml.getElementsByTagName('url')[0].firstChild.data; //<url> ในโหนดแรก
_logo= '<img src="'+_url +'"alt="" /><br />';
}
//อ่านรายการของเอกสาร
var _item = xml.getElementsByTagName('item');
var _copy = "<br />";
for(var i=1; i<_item.length; i++) { //อ่านรายการย่อยต่างๆ
//ป้องกันเครื่องหมายพิเศษ สำหรับ description
var pubDate = xml.getElementsByTagName('pubDate')[i].firstChild.data; //<pubDate>
if(checkForTag(xml.getElementsByTagName('image')[0]) && i>0) { //<image> รูปของเนื้อหาข่าว (ถ้ามี)
var _title = xml.getElementsByTagName('title')[i+1].firstChild.data; //<title>
var _link = xml.getElementsByTagName('link')[i+1].firstChild.data; //<link>
} else {
var _title = xml.getElementsByTagName('title')[i].firstChild.data; //<title>
var _link = xml.getElementsByTagName('link')[i].firstChild.data; //<link>
}
if(i>1) {
var previousPubDate=xml.getElementsByTagName('pubDate')[i-1].firstChild.data;
}
if(pubDate!=previousPubDate || previousPubDate==undefined) {
_copy += '<div class="pubdate">'+pubDate+'</div>';
}
_copy += "<a href='"+_link+"' target='_blank' class='newslink'>"+_title+"</a><br />";
}
//แสดงผล
var aggregator=document.getElementById(handler);
aggregator.innerHTML=_logo+header+_copy;
}
function checkForTag(tag) {
if (tag != undefined) return true;
return false;
}
คือว่าผมได้อ่านบทความและสนใจมากๆๆ แต่พยายามทำความเข้าใจแล้วก็ยังงง อยู่อ่ะครับ
ตรงที่เป็น สีแดงอ่ะครับ ผม งง ตรงค่าของ i ทำไมมัน บางอันก็เป็น 0 ไปเลย บางอันก็ i ,i+1 ทำไมถึงเป็นลักษณะนั้นอ่ะครับ หรือคือพูดง่ายๆๆ
เลยนะครับว่าตรงที่เป็นสีแดงผม งง มากมายเลยครับ ช่วยอธิบายให้ฟังหน่อยนะครับ
ขอบคุณครับ ^^
document.getElementById(handler).innerHTML="Loding...";
var req=Inint_AJAX();
if (req!=null) {
req.onreadystatechange=function() {
if (req.readyState==4) {
if (req.status==200) {
xml=req.responseXML;
parseFeed(req.responseXML, handler);
}
}
};
req.open("GET", "rss.php?feed="+url+"&lang="+language, true);
req.send(null);
}
}
function parseFeed(xml, handler) {
//อ่านหัวข้อของเอกสารออกมา
var _title = xml.getElementsByTagName('title')[0].firstChild.data; //<title>
var _link = xml.getElementsByTagName('link')[0].firstChild.data; //<link>
var _description = xml.getElementsByTagName('description')[0].firstChild.data; //<description>
var header="<a href='"+_link+"' target='_blank' title='"+_description+"' class='header'>"+_title+"</a>";
var _logo="";
if(checkForTag(xml.getElementsByTagName('image')[0])) {
var _url=xml.getElementsByTagName('url')[0].firstChild.data; //<url> ในโหนดแรก
_logo= '<img src="'+_url +'"alt="" /><br />';
}
//อ่านรายการของเอกสาร
var _item = xml.getElementsByTagName('item');
var _copy = "<br />";
for(var i=1; i<_item.length; i++) { //อ่านรายการย่อยต่างๆ
//ป้องกันเครื่องหมายพิเศษ สำหรับ description
var pubDate = xml.getElementsByTagName('pubDate')[i].firstChild.data; //<pubDate>
if(checkForTag(xml.getElementsByTagName('image')[0]) && i>0) { //<image> รูปของเนื้อหาข่าว (ถ้ามี)
var _title = xml.getElementsByTagName('title')[i+1].firstChild.data; //<title>
var _link = xml.getElementsByTagName('link')[i+1].firstChild.data; //<link>
} else {
var _title = xml.getElementsByTagName('title')[i].firstChild.data; //<title>
var _link = xml.getElementsByTagName('link')[i].firstChild.data; //<link>
}
if(i>1) {
var previousPubDate=xml.getElementsByTagName('pubDate')[i-1].firstChild.data;
}
if(pubDate!=previousPubDate || previousPubDate==undefined) {
_copy += '<div class="pubdate">'+pubDate+'</div>';
}
_copy += "<a href='"+_link+"' target='_blank' class='newslink'>"+_title+"</a><br />";
}
//แสดงผล
var aggregator=document.getElementById(handler);
aggregator.innerHTML=_logo+header+_copy;
}
function checkForTag(tag) {
if (tag != undefined) return true;
return false;
}
คือว่าผมได้อ่านบทความและสนใจมากๆๆ แต่พยายามทำความเข้าใจแล้วก็ยังงง อยู่อ่ะครับ
ตรงที่เป็น สีแดงอ่ะครับ ผม งง ตรงค่าของ i ทำไมมัน บางอันก็เป็น 0 ไปเลย บางอันก็ i ,i+1 ทำไมถึงเป็นลักษณะนั้นอ่ะครับ หรือคือพูดง่ายๆๆ
เลยนะครับว่าตรงที่เป็นสีแดงผม งง มากมายเลยครับ ช่วยอธิบายให้ฟังหน่อยนะครับ
ขอบคุณครับ ^^
ในตัวอย่างแสดงว่าเป็นการใช้ array โดยไม่ต้องจองหน่วนความจำครับ เพียงแต่อาจะทำความเข้าใจยากนิดนึง
var pubDate = xml.getElementsByTagName('pubDate')[i].firstChild.data;
มาจาก
var pubDates = xml.getElementsByTagName('pubDate');
var pubDate = pubDates[i].firstChild.data;
ทำไม จังหวะการเพิ่มของ Index ของ array นั้น มันไม่ได้เพิ่มเก็บจาก Index ที่ 0 อ่ะครับ
บางอันก็เป็น i+1 บางอันก็เป็น i-1 อ่ะครับ คือผมไม่ค่อยเข้าใจโค้ดว่ามันอ่านค่า จาก xml แล้วมีลำดับการทำงานยังไง
คืออ่านโค้ดแล้วรู้สึกยากๆๆๆๆมากๆๆ ครับ ช่วยแนะนำหน่อยนะครับ ขอบคุณครับ
ขอบคุณมากๆๆครับ กำลังสนใจแบบสุดๆๆ
10 ปากว่า ไม่เท่าตาเห็น 10 ตาเห็น ไม่เท่ามือคลำ 10 มือคลำ ไม่เท่าทำเอง
xml สร้างด้วย Javascript ไม่ได้ครับ
อิอิ