UPDATE 1:Когда данные JSONP изменения
я могу обойти эту проблему с TRY/поймать, но я предпочел бы не использовать этот метод, когда я знаю, в чем проблема:
try {
buildHTML.push("<tr><td>" + day.td[0].div.abbr.content + "</td><td><img src='" + day.td[1].div.div.img.src + "' /></td><td>" + day.td[2].span[0].span.content + "</td><td>" + day.td[3].span[0].span.content + "</td><td>" + day.td[4].span[0].span[1].content + "</td>");
} catch(err) {
buildHTML.push("<tr><td>" + day.td[0].div.abbr.content + "</td><td><img src='" + day.td[1].div.div.img.src + "' /></td><td></td><td>" + day.td[3].span[0].span.content + "</td><td>" + day.td[4].span[0].span[1].content + "</td>");
}
ORIGINAL ВОПРОС:
Используя следующую JSONP службу:
Я использую следующий скрипт для захвата данных:
$(document).ready(function() {
get_bbc_weather();
function get_bbc_weather() {
$.ajax({
url: "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%20%3D%20%22http%3A%2F%2Fnews.bbc.co.uk%2Fweather%2Fforecast%2F4276%3F%26search%3Dgerrards%2520cross%26itemsPerPage%3D10%26region%3Dworld%26area%3DGerrards%2520Cross%22%20and%20xpath%3D'%2F%2Ftbody'&format=json&callback=cbfunc22&rand=" + Math.random(),
type: 'GET',
dataType: 'jsonp',
jsonp: 'callback',
jsonpCallback: 'cbfunc22',
error: function(xhr, status, error) {
alert(xhr.responseText);
},
success: function(data) {
var buildHTML = [];
var weather = data.query.results.tbody.tr;
buildHTML.push("<tr><td>Day</td><td>Weather</td><td>Max<br />Day<br />(°C)</td><td>Min<br />Night<br />(°C)</td><td>Wind<br />(MPH)</td>");
for (var i = 0; i < weather.length; i++) {
var day = weather[i];
buildHTML.push("<tr><td>" + day.td[0].div.abbr.content + "</td><td><img src='" + day.td[1].div.div.img.src + "' /></td><td>" + day.td[2].span[0].span.content + "</td><td>" + day.td[3].span[0].span.content + "</td><td>" + day.td[4].span[0].span[1].content + "</td>");
}
$('#divContent1').empty().append("<table>" + buildHTML.join("</tr>") + "</table>")
}
});
}
});
Однако в определенное время суток, day.td[2].span[0].span.content
становится null
. Когда это произойдет, как его обнаружить и использовать следующий раздел temp min
вместо этого только в первый день? Остальные дни должны продолжать использовать раздел temp max
.
Ответ на этот вопрос ниже ответа. Если нет, есть ли лучший ответ? – oshirowanen
Код в 'try ... catch' заменяет пустое значение пустым значением. Это то, что вы хотите, или вы хотите какую-то другую ценность, как объяснялось в вопросе? Если это так, в разделе «следующий временный раздел», что означает «следующий» и «раздел»? – Guffa
Как вы пришли к выводу, что «' day.td [2] .span [0] .span.content' становится 'null'?? Это утверждение, по-видимому, вызвало половину ответов, являющихся не более чем ответами на вопрос «Как сделать довольно условным?». – mercator