访问导致我的应用程序崩溃的数组元素
accessing elements of an array causing my app to crash
好的,真的很基本。我就是不明白。我正在分析一个xml提要。我正在标签中搜索图像的正则表达式。此刻,当我打印时
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],但这一行导致我的应用程序崩溃。我将此变量设置为等于表行的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();
您可以使用数组访问match()的函数结果,如:
// Prints 1st element of str.match(patt1) to console
console.log(str.match(patt1)[0]);
但是,如果您将来要使用匹配,您应该将结果数组放在变量中并使用它。
我用这行修复了它:
`leftImage: str.match(patt1) !== null ? str.match(patt1)[0] : 'NewsStory.png',
当没有结果而不是未定义时,我忘记了match会返回一个对象。
相关文章:
- 在函数中添加数组元素的数值
- 访问JSON对象内部的数组元素
- Mongoose-在更新中删除数组元素
- javascript数组元素是否知道其封闭数组
- 将数组元素附加到FormData dos'不适用于Firefox 15
- 如何在javascript中使用click函数选择数组元素
- 如何在JavaScript中剥离数组元素中的非整数
- 消隐数组元素是否生成自己的属性
- 如何使一个Math.random数组元素比另一个数组元素更有可能被选中
- 在Codrops的内容中添加数组元素展开缩略图网格预览
- 如何使用Jquery水平打印表中的数组元素,并在某个元素之后垂直打印
- 如何访问数组中的数组元素(JavaScript)
- 生成ACF标记位置的数组(元素列表后缺少])
- validate.js验证数组元素
- JavaScript Unshift EACH 数组元素
- 如何在加号运算符之后选择数组元素的一部分
- 访问标记图标的图像数组元素
- JavaScript 合并相同的数组元素
- 删除仅空格数组元素
- 访问导致我的应用程序崩溃的数组元素