我試圖在發送查詢時在表中顯示json數據。該請求工作正常,一切都很好地顯示。但是: jquery拋出一個TypeError:當我嘗試顯示內容時未定義a。在jQuery中將循環與.each()結合使用
第一次加載頁面時內容正確顯示,但當通過表單發送另一個請求時拒絕更新。我只是想在HTML中的錶行追加到一個表:
<table id="table"></table>
的JS是這樣的:
for (var id = 0; id < 150; id++) {
showItems(id);
}
function showItems(){
$.each(json.list.item[id], function(i, val) {
var $r = $('<tr>');
var $c = $('<td>').text(i).appendTo($r);
$c = $('<td>').text(val).appendTo($r);
$("#table").append($r);
});
}
我敢肯定它有事情做與傳遞的ID for循環到每個函數,但我不知道如何解決這個問題。由於JS在for循環中沒有塊範圍,所以在$ .each()中可以訪問id變量? 但我不能解決爲什麼jQuery會拋出「a未定義」的錯誤,並且腳本不會反應,直到頁面重新加載。我認爲它可能是一個未定義的變量返回NULL,但我不知道哪個。
在這裏和網上閱讀噸的答案找不到解決方案(也關於JS變量範圍和閉包)。
http://jshint.com/不顯示任何未定義的變量,除了jquery $ S。
幫助是極大的讚賞:)
編輯: 的_id修復沒有幫助。這是整個js代碼。
$(document).ready(function(){
$("#term").focus(function() {
var full = $("#table > tbody > tr").length? true : false;
if(full == false) {
$("#message").empty();
$("#table").empty();
}
});
var getFood = function(){
var food = $('#term').val();
if(food ==''){
$('#message').html("Ha! We haven't seen you type, so no request! Type something!<hr>");
} else {
$('#message').html("Your information is on its way!<hr>");
$.getJSON("APICALL", function(json){
console.log(json);
for (var id = 0; id < 150; id++) {
showItems(id);
}
function showItems(){
$.each(json.list.item[id], function(i, val) {
var $r = $('<tr>');
var $c = $('<td>').text(i).appendTo($r);
$c = $('<td>').text(val).appendTo($r);
$("#table").append($r);
});
}
});
}
};
$('#search').click(getFood);
});
當我離開了for循環,而是隻需使用:
$.each(json.list.item[0], function(i, val) {
var $r = $('<tr>');
var $c = $('<td>').text(i).appendTo($r);
$c = $('<td>').text(val).appendTo($r);
$("#table").append($r);
});
僅顯示的第一個對象,它工作正常,並不會引發錯誤。這讓我認爲它與for/.each()連接有關。
EDIT2:解決方案
應用於下面的表格由@ MM-TAC提出的代碼和完美的作品:
$.each(json.list.item, function (key, data) {
console.log(key)
$.each(data, function(index, data) {
var $r = $('<tr>');
var $c = $('<td>').text(index).appendTo($r);
$c = $('<td>').text(data).appendTo($r);
$("#table").append($r);
});
});
可能需要添加更多代碼。什麼是錯誤?在該代碼塊中甚至沒有使用'a',所以我不認爲這是錯誤所在。 – Drazisil
嘗試使用'function showItems(_id)'和'json.list.item [_id]' – slash197
我們需要猜測JSON結構,可能您沒有以正確的方式訪問數據。它的格式爲「{」list「:{」item「:[」Text0「,」Text1「,...]},...}'? – rplantiko