好的,真基本的排队。我只是没有得到这个。我正在解析一个xml feed。我在标签内搜索图像的正则表达式。在那一刻,当我打印
str.match(patt1)
,
我得到了:
http://www.highlandradio.com/wp-content/uploads/2013/03/jimmy.jpg,http://www.highlandradio.com/wp-content/uploads/2013/03/jimmy.jpg,jpg
在控制台中。我只需要第一个元素,即
http://www.highlandradio.com/wp-content/uploads/2013/03/jimmy.jpg
为了做到这一点,我尝试了str.match(patt1)[0],但这一行导致我的应用程序崩溃。我将此varibale设置为等于表行的leftImage属性。我也在测试它是否为“继续”循环,因为我认为可能是问题。
我也尝试过str.match(patt1 [0]),但这也没有给我所需的输出。我做错了什么?
编辑:APP JS下面:
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)
您可以对match()的函数结果进行用户数组访问,如下:
// Prints 1st element of str.match(patt1) to console
console.log(str.match(patt1)[0]);
但是如果你将来会使用匹配,你应该把结果数组放到变量中并使用它。
答案 1 :(得分:0)
我明白了这句话:
`leftImage: str.match(patt1) !== null ? str.match(patt1)[0] : 'NewsStory.png',
我忘了匹配在没有结果而不是未定义的情况下返回一个对象。