2012-01-18 54 views
-3

其實我有一個全局JSON,當我試圖解析其循環中的值時,它顯示錯誤「未捕獲類型錯誤:無法讀取值'名稱'未定義「。我嘗試了很多,但我仍然無法找出任何解決方案。未捕獲類型錯誤:無法讀取未定義的值'名稱'

$(document).ready(function(){ 

var productJSON = [ 
        {id:"1001",name:"Hopper1",image:"images/290161k.jpg"}, 
        {id:"1002",name:"Hopper2",image:"images/290161k.jpg"}, 
        {id:"1003",name:"Hopper3",image:"images/290161k.jpg"}, 
        {id:"1004",name:"Hopper4",image:"images/290161k.jpg"}, 
        {id:"1005",name:"Hopper5",image:"images/290161k.jpg"}, 
        {id:"1006",name:"Hopper6",image:"images/290161k.jpg"}, 
        {id:"1007",name:"Hopper7",image:"images/290161k.jpg"}, 
        {id:"1008",name:"Hopper8",image:"images/290161k.jpg"} 
        ]; 
var a=0; 
for(var i=0;i<productJSON.length;i++){ 
    var pagedisplay = ''; 
    for(var j=0;j<2;j++){ 
      var generatedProductDisplay = ''; 

      generatedProductDisplay = '<div id="'+productJSON[a].id+'" class="productDiv"><a class="productLink" href="#"><center><div class="productImage"><img src="'+productJSON[a].image+'" width="100%" height="200px" alt="'+productJSON[a].name+'"></div><div><p class="productName">'+productJSON[a].name+'</p></div></center></a></div>'; 

      pagedisplay = pagedisplay+generatedProductDisplay; 
      a++; 
     } 
     pagedisplay = pagedisplay+'<br/>'; 
     $(".productDisplay").append(pagedisplay); 
    } 

$(".productDiv").live("click",function(){ 
    alert("Hello"); 
}); 
    }); 

這是HTML代碼

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Welcome to Nitin Agro Industries, Chhatarpur</title> 
<link href="styles/main.css" type="text/css" rel="stylesheet" /> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js" 
type="text/javascript"></script> 
<script src="productsDisplay.js" type="text/javascript"></script> 

</head> 

<body> 
<center> 
<div class="page-wrap"> 
    <div class="centerContent"> 
    <h1>Explore our Product Catalog</h1> 
    <div class="centerText"> 
    <center> 
     <div class="hideShowDiv"> 
     skdddddddddddd 
     </div> 
     <div class="productDisplay"></div> 
    </center> 
    </div> 
</div> 
</div> 
</center> 
</body> 
</html> 
+4

我們怎麼能可能幫助你沒有看到JSON和代碼? – 2012-01-18 13:46:53

+0

粘貼源代碼。 – 2012-01-18 13:47:16

+3

陳述顯而易見:問題是你正在訪問一個不存在的屬性。解決方法是不訪問它或確保它存在。 – 2012-01-18 13:47:53

回答

0

這意味着屬性未在該點限定。因此請檢查您是否定義了該屬性。

這個問題顯然需要源代碼來回答。請把它們放。

編輯

它的一個出界的問題。更改此行:

generatedProductDisplay = '<div id="'+productJSON[a].id+'" class="productDiv"><a class="productLink" href="#"><center><div class="productImage"><img src="'+productJSON[a].image+'" width="100%" height="200px" alt="'+productJSON[a].name+'"></div><div><p class="productName">'+productJSON[a].name+'</p></div></center></a></div>'; 

a包含超出數組範圍的值。將其更改爲i

正如你還沒有說明你的邏輯。我認爲內環什麼也不做(從我可以得出),並提出這樣的:

for(var i=0;i<productJSON.length;i++){ 
    var pagedisplay = ''; 
     var generatedProductDisplay = ''; 

     generatedProductDisplay = '<div id="'+productJSON[i].id+'" class="productDiv"><a class="productLink" href="#"><center><div class="productImage"><img src="'+productJSON[i].image+'" width="100%" height="200px" alt="'+productJSON[i].name+'"></div><div><p class="productName">'+productJSON[i].name+'</p></div></center></a></div>'; 

     pagedisplay = pagedisplay+generatedProductDisplay; 
     pagedisplay = pagedisplay+'<br/>'; 
     $(".productDisplay").append(pagedisplay); 
    } 

EDIT 2

正如我還是不明白你的內循環,這是我對此採取:

沒有內環:

http://jsfiddle.net/guSLL/ 
$(document).ready(function() { 

    var productJSON = [ 
     { 
     id: "1001", 
     name: "Hopper1", 
     image: "images/290161k.jpg"}, 
    { 
     id: "1002", 
     name: "Hopper2", 
     image: "images/290161k.jpg"}, 
    { 
     id: "1003", 
     name: "Hopper3", 
     image: "images/290161k.jpg"}, 
    { 
     id: "1004", 
     name: "Hopper4", 
     image: "images/290161k.jpg"}, 
    { 
     id: "1005", 
     name: "Hopper5", 
     image: "images/290161k.jpg"}, 
    { 
     id: "1006", 
     name: "Hopper6", 
     image: "images/290161k.jpg"}, 
    { 
     id: "1007", 
     name: "Hopper7", 
     image: "images/290161k.jpg"}, 
    { 
     id: "1008", 
     name: "Hopper8", 
     image: "images/290161k.jpg"} 
    ]; 
    for (var i = 0; i < productJSON.length; i++) { 
     var pagedisplay = ''; 
     generatedProductDisplay = '<div id="' + productJSON[i].id + '" class="productDiv"><a class="productLink" href="#"><center><div class="productImage"><img src="' + productJSON[i].image + '" width="100%" height="200px" alt="' + productJSON[i].name + '"></div><div><p class="productName">' + productJSON[i].name + '</p></div></center></a></div>'; 
     pagedisplay = pagedisplay + generatedProductDisplay; 
     pagedisplay = pagedisplay + '<br/>'; 
     $(".productDisplay").append(pagedisplay); 
    } 

    $(".productDiv").live("click", function() { 
     alert("Hello"); 
    }); 
}); 

隨着內部循環:

http://jsfiddle.net/guSLL/1/

$(document).ready(function() { 

    var productJSON = [ 
     { 
     id: "1001", 
     name: "Hopper1", 
     image: "images/290161k.jpg"}, 
    { 
     id: "1002", 
     name: "Hopper2", 
     image: "images/290161k.jpg"}, 
    { 
     id: "1003", 
     name: "Hopper3", 
     image: "images/290161k.jpg"}, 
    { 
     id: "1004", 
     name: "Hopper4", 
     image: "images/290161k.jpg"}, 
    { 
     id: "1005", 
     name: "Hopper5", 
     image: "images/290161k.jpg"}, 
    { 
     id: "1006", 
     name: "Hopper6", 
     image: "images/290161k.jpg"}, 
    { 
     id: "1007", 
     name: "Hopper7", 
     image: "images/290161k.jpg"}, 
    { 
     id: "1008", 
     name: "Hopper8", 
     image: "images/290161k.jpg"} 
    ]; 
    for (var i = 0; i < productJSON.length;) { 

     var pagedisplay = ''; 
     for (j = 0; j < 2 && i < productJSON.length; j++, i++) { 
      generatedProductDisplay = '<div id="' + productJSON[i].id + '" class="productDiv"><a class="productLink" href="#"><center><div class="productImage"><img src="' + productJSON[i].image + '" width="100%" height="200px" alt="' + productJSON[i].name + '"></div><div><p class="productName">' + productJSON[i].name + '</p></div></center></a></div>'; 
      pagedisplay = pagedisplay + generatedProductDisplay; 
      pagedisplay = pagedisplay + '<br/>'; 

     } 
     $(".productDisplay").append(pagedisplay); 
    } 

    $(".productDiv").live("click", function() { 
     alert("Hello"); 
    }); 
}); 
+0

尊敬的主席先生,內部循環用於控制網頁中的列數。意味着我可以控制產品數量(2-3)等。 – 2012-01-18 14:04:23

+0

@AnkurJain然後爲了回答這個問題,我們還需要HTML標記。同時說明你想要完成什麼的邏輯。這是爲了找到什麼是錯的。 1黃金法則是想象自己回答這個問題並問自己:「我是否有所有需要的信息來回答這個問題?」 – footy 2012-01-18 14:07:40

+0

非常感謝您的建議先生,下次我會小心翼翼,現在我已經粘貼了整個代碼。你現在可以檢查出來。 – 2012-01-18 14:15:49

相關問題