У меня есть следующий скрипт, который, кажется, получает значение только из первой итерации цикла, а не остальные:
$(document).ready(function() { get_jsonp_feed(); function get_jsonp_feed() { $.ajax({ url: "http://query.yahooapis.com/v1/public/yql?q=%20SELECT%20*%20FROM%20html%20WHERE%20url%3D%22http%3A%2F%2Fnews.bbc.co.uk%2Fweather%2Fforecast%2F4276%3Fsearch%3Dgerrards%2520cross%26itemsPerPage%3D10%26region%3Dworld%26area%3DGerrards%2520Cross%22%20and%20xpath%20%3D%20'%2F%2Ftable%2Ftbody%2Ftr'&format=json&diagnostics=true&callback=cbfunc", type: 'GET', dataType: 'jsonp', jsonp: 'callback', jsonpCallback: 'cbfunc', error: function(xhr, status, error) { alert(xhr.responseText); }, success: function(data) { var itemList = data.query.results.tr[0].td; for (var i = 0; i < 5; i++) { alert(itemList[i].div.abbr.content); } } }); } });
Это отображает Mon, после чего отображается Cannot read property 'content' of undefined,Должно отображаться 5 предупреждений: Mon, Tue, Wed, Thu и Fri.
Mon
Cannot read property 'content' of undefined
Tue
Wed
Thu
Fri
jsfiddle: http://jsfiddle.net/DsEGT/.
Вы должны проходить циклы по дням и получать первое свойство каждого дня, а не циклически повторять свойства в первый день:
var itemList = data.query.results.tr; for (var i = 0; i < 5; i++) { alert(itemList[i].td[0].div.abbr.content); }
Вы хотите циклически проходить элементы tr, а не элементы td. Сделайте обратный вызов success:
tr
td
success