2013-07-19 83 views
0

必須有人可以發現我的錯誤!我解析XML飼料,並通過循環運行,以獲得網頁上的某些項目:for循環在某些迭代中隨機崩潰

www.highlandradio.com/feed/ 

我在哪裏,我設置變量mp3Test行遇到一個錯誤。我想要做的就是將其設置爲與機箱標籤的url屬性相等(如果存在)。這就是爲什麼我包括測試來檢查每個項目是否有外殼標籤,如果它是我設置它等於url標記,但如果它不,我設置它等於'null.mp3 ' 目前。當通過循環運行時,我得到了一定數量的正確數字,然後在循環的一些迭代中,我崩潰了。我正在使用鈦,所以沒有得到任何正確的錯誤信息。它只是突出顯示了我設置mp3Test的地方,並說要調試當前的指令指針。我瘋了。請幫忙。

var url="http://www.highlandradio.com/feed/"; 

var xhr = Titanium.Network.createHTTPClient(); 

xhr.onload = function() { 
    // Data is returned from the blog, start parsing 
    var doc = this.responseXML.documentElement;  

    // begin looping through blog posts 
    var items = doc.getElementsByTagName("item"); 

    var enclosure = doc.getElementsByTagName("enclosure"); 
    console.log("NEWEST Enclosure Length -----------"+enclosure.length); 

    for (var i = 0; i < items.length; i++) {   

     var itemsEnclosureLength=items.item(i).getElementsByTagName("enclosure").length; 
     var itemsEnclosureExists=items.item(i).getElementsByTagName("enclosure"); 
     console.log("EXISTs ----------------------------------"+ itemsEnclosureExists); 
     console.log("Newest ENCLOSURE LENGTH ---------------------- [ "+i+ " ]" + itemsEnclosureLength); 

     var str=items.item(i).getElementsByTagName("content:encoded").item(0).text; 
     console.log("STRING TEST "+ str); 

     var patt1=/([a-z\-_0-9\/\:\.]*\.(jpg|jpeg|png|gif))/i; 

     var urlMatch = str.match(patt1); 
     console.log("MATCHES TESTER -----------------------------------" + typeof urlMatch); 

     data.push({ 

      title: items.item(i).getElementsByTagName("title").item(0).text,    
      leftImage: str.match(patt1) !== null ? str.match(patt1)[0] : 'image_news.png', 
      dataToPass: items.item(i).getElementsByTagName("description").item(0).text, 
      mp3Test: itemsEnclosureLength > 0 ? items.item(i).getElementsByTagName("enclosure").item(i).getAttribute("url"):'NULL.MP3' 
     }); 
     console.log("Check this --------------------------"+ mp3Test); 



    } 

BUMP2

+0

'items.item(i)'應該'items [i]',不是嗎? – Barmar

+0

@Barmar no。不與鈦。 items.item(i)對所有其他標籤工作正常。如果我用mp3Test註釋掉它,它會運行。有一些我錯過了:( – user2363025

+0

@Barmar它可以,但技術上,'.item()'是一個真實,有效的方法:https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection#Methods。我喜歡'[i]'儘管 – Ian

回答

0

的問題是,我用兩個計數器,其具有相同的價值!愚蠢的錯誤,但...這是解決方案:

var itemsEnclosureLength=items.item(i).getElementsByTagName("enclosure").length; 
var itemsEnclosureExists=items.item(i).getElementsByTagName("enclosure"); 

if (itemsEnclosureExists){ 

    for (n=0; n<itemsEnclosureLength; n++){ 
     mp3=items.item(i).getElementsByTagName("enclosure").item(n).getAttribute("url"); 
    } 
} 
else{ 
    mp3= 'NULL.mp3'; 
}