2013-07-15 61 views
0

好的,真正的基本排隊。我只是沒有得到這個。我正在解析一個XML feed。我在標籤內部搜索圖像的正則表達式。在控制檯訪問陣列的元素導致我的應用程序崩潰

http://www.highlandradio.com/wp-content/uploads/2013/03/jimmy.jpg,http://www.highlandradio.com/wp-content/uploads/2013/03/jimmy.jpg,jpg

:在一分鐘,當我打印

str.match(patt1) , 我得到。我需要的只是第一個元素,即

http://www.highlandradio.com/wp-content/uploads/2013/03/jimmy.jpg

要做到這一點我想str.match(patt1)[0],但此行是導致我的應用程序崩潰。我將此varibale設置爲等於錶行的leftImage屬性。我也在測試它是否爲'繼續'循環,因爲我認爲這可能是問題所在。

我也試過str.match(patt1 [0]),但是這個si沒有給我想要的輸出。我究竟做錯了什麼?

編輯:APP JS BELOW:

var win1 = Titanium.UI.createWindow({ 
    title:'Tab 1', 
    backgroundColor:'#fff', 
    //tabBarHidden: true 

}); 
var tab = Titanium.UI.createTab({ 
    icon:'KS_nav_views.png', 
    title:'Tab 1', 
    window:win1 
}); 

var data = []; 

var table = Ti.UI.createTableView({ 
    //data:data 
}); 

var url="http://www.highlandradio.com/feed/"; 
//rss feed url 
//var url="http://apod.nasa.gov/apod.rss"; // rss feed url 
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"); 
    console.log(items); 
    for (var i=0;i<items.length;i++) { 

     var str=items.item(i).getElementsByTagName("content:encoded").item(0).text; 
     console.log("FIRST STRING TEST "+ str); 
     //var src= items.item(i).getElementsByTagName("content:encoded").item(0).getAttribute("src"); 
     //console.log("FIRST SRC TEST "+ src); 
     var patt1=/([a-z\-_0-9\/\:\.]*\.(jpg|jpeg|png|gif))/i; 


     var urlMatch = str.match(patt1); 
     data.push({ 

      title: items.item(i).getElementsByTagName("title").item(0).text,    
      leftImage: urlMatch.length > 0 ? urlMatch[0] : 'NewsStory.png', 
      dataToPass: items.item(i).getElementsByTagName("description").item(0).text, 
      className: "TableRow", 
      hasChild: true, 
      jsTest: true, 
      js:"external.js" 
     }); 

    } 

    table.setData(data); 

}; 

xhr.onerror = function(e) { 
    // should do something more robust 
    alert('Network error '+e.error); 
}; 

xhr.open('GET',url); 
xhr.send(); 

win1.add(table); 


win1.open(); 
+0

你能定義什麼「崩潰」的含義嗎? –

+0

@Ray尼古拉斯通過崩潰我的意思是,應用程序停留在初始屏幕和行str.match(patt1)[0]被突出顯示爲藍色,我被告知要調試該行 – user2363025

回答

0

您可以將用戶數組訪問比賽(的函數的結果),如:

// Prints 1st element of str.match(patt1) to console 
console.log(str.match(patt1)[0]); 

但是,如果你將在未來的使用火柴,你應該把結果數組到變量並使用它。

+0

我試過這個,它沒有工作 – user2363025

+0

試試即: 'var matches = str.match(patt1); console.log(與[0]匹配);' – Matyunin

+0

仍然導致應用程序崩潰。我不明白 – user2363025

0

我得到了它與該行定勢:

`leftImage: str.match(patt1) !== null ? str.match(patt1)[0] : 'NewsStory.png', 

我忘了,當沒有結果,而不是不確定的比賽返回一個對象。