2012-01-18 79 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

相关问题