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 ครับ
ในตัวอย่างแสดงว่าเป็นการใช้ array โดยไม่ต้องจองหน่วนความจำครับ เพียงแต่อาจะทำความเข้าใจยากนิดนึง
var pubDate = xml.getElementsByTagName('pubDate')[i].firstChild.data;
มาจาก
var pubDates = xml.getElementsByTagName('pubDate');
var pubDate = pubDates[i].firstChild.data;
ในตัวอย่างแสดงว่าเป็นการใช้ 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 แล้วมีลำดับการทำงานยังไง
คืออ่านโค้ดแล้วรู้สึกยากๆๆๆๆมากๆๆ ครับ ช่วยแนะนำหน่อยนะครับ ขอบคุณครับ
ขอบคุณมากๆๆครับ กำลังสนใจแบบสุดๆๆ
ทำไม จังหวะการเพิ่มของ Index ของ array นั้น มันไม่ได้เพิ่มเก็บจาก Index ที่ 0 อ่ะครับ
บางอันก็เป็น i+1 บางอันก็เป็น i-1 อ่ะครับ คือผมไม่ค่อยเข้าใจโค้ดว่ามันอ่านค่า จาก xml แล้วมีลำดับการทำงานยังไง
คืออ่านโค้ดแล้วรู้สึกยากๆๆๆๆมากๆๆ ครับ ช่วยแนะนำหน่อยนะครับ ขอบคุณครับ
ขอบคุณมากๆๆครับ กำลังสนใจแบบสุดๆๆ
ถามต่ออีกหน่อยนะครับ javascript สร้าง Xml พอมีตัวอย่างบางเปล่าครับ ช่วยแนะนำหน่อยนะครับ ขอบคุณครับ
แนะนำให้ preview เอกสาร XML ดู แล้วลองไล่ค่าทีละตัวน่าจะเข้าใจได้ง่ายกว่า ครับ ถ้าผมจะอธิบายให้ละเอียดได้ คงต้องไล่อธิบายกันตั้งแต่ DOM TREE XML ถึงจะมองภาพออกละครับ เอาไว้ถ้าผมมีเวลาผมจะพยายามเขียนเป้นบทความให้ละกัน ขอติดไว้ก่อนครับ
10 ปากว่า ไม่เท่าตาเห็น 10 ตาเห็น ไม่เท่ามือคลำ 10 มือคลำ ไม่เท่าทำเอง
xml สร้างด้วย Javascript ไม่ได้ครับ
10 ปากว่า ไม่เท่าตาเห็น 10 ตาเห็น ไม่เท่ามือคลำ 10 มือคลำ ไม่เท่าทำเอง
xml สร้างด้วย Javascript ไม่ได้ครับ
ขอบคุณครับ อาจาร์ย ผมจะพยามดูก่อน นะครับ
อิอิ
อิอิ