[英]When using .each in jQuery with a JSON object how do I avoid undefined properties?
我正在嘗試使用JSON對象中的數據填充頁面上<inputs>
的值。
http://codepen.io/jimmykup/pen/exAip?editors=101
首先,我創建我的JSON對象。 在這種情況下,它只有兩個值。 一個name
和一個url
。
var jsonObj = [];
var name = "1stname";
var url = "firsturl";
item = {}
item ["name"] = name;
item ["url"] = url;
jsonObj.push(item);
接下來,我使用jQuery的.each()查找具有.name
類的所有輸入,並使用index
將“ name”的值插入輸入中。 之后,我要使用.url
作為類名瀏覽所有輸入,並執行相同的操作。
$("input.name").each(function( index ) {
if ( jsonObj[index].name ) {
$(this).val( jsonObj[index].name );
}
});
$("input.url").each(function( index ) {
if ( jsonObj[index].url ) {
$(this).val( jsonObj[index].url );
}
});
問題是,如果我的JSON對象的“名稱”值為1,但是.each()
找到2個輸入,一旦到達第二個輸入,我就會在控制台中收到此錯誤。
Uncaught TypeError: Cannot read property 'name' of undefined
然后,我的第二個.each()函數無法運行。 我應該怎么做才能避免這個問題?
在嘗試獲取name
或url
之前,需要確保定義了jsonObj[index]
。
$("input.name").each(function( index ) {
var data = jsonObj[index];
if ( data && data.name ) {
$(this).val( data.name );
}
});
$("input.url").each(function( index ) {
var data = jsonObj[index];
if ( data && data.url ) {
$(this).val( data.url );
}
});
Json objet的格式如下:
var jsonobj={"name":"1stname","url":"firsturl"};
使用這種格式,您可以執行代碼。
而您所形成的基本上是一個數組。
檢查索引是否小於數組的長度,否則退出循環:
$("input.name").each(function( index ) {
if (index < jsonObj.length && jsonObj[index].name ) {
$(this).val( jsonObj[index].name );
} else {
return false;
}
});
$("input.url").each(function( index ) {
if ( index < jsonObj.length && jsonObj[index].url ) {
$(this).val( jsonObj[index].name );
} else {
return false;
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.