2012-01-18 23 views
-3

루프에서 값을 파싱하려고 할 때 실제로 전역 JSON이 발생했습니다. 오류가 표시됩니다. "잡히지 않는 유형 오류 : 'name'값을 읽을 수 없습니다. 정의되지 않음 ". 나는 많은 노력을했지만 여전히 어떤 해결책을 찾아 내지 못하고있다. 잡히지 않은 타입 오류 : 정의되지 않은 'name'값을 읽을 수 없습니다.

$(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과 코드를 보지 않고 당신을 도울 수 있을까? –

+0

소스 코드 붙여 넣기. –

+3

명백한 의미 : 문제는 존재하지 않는 속성에 액세스하고 있다는 것입니다. 해결책은 액세스하지 않거나 존재하는지 확인하는 것입니다. –

답변

0

입니다. 따라서 속성을 정의했는지 확인하십시오.

질문에 대답하려면 분명히 소스 코드가 필요합니다. 그들을 넣어주십시오.

편집

바인드 문제의 부족. 이 줄을 변경하십시오 :

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); 
    } 

편집 2

난 여전히 내부 루프를 이해 didnt하는 것처럼, 여기에 필자는입니다 :

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"); 
    }); 
}); 

내부 루프 :

내부 루프없이

17,451,515,

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) 등으로 제품 수를 제어 할 수 있다는 것을 의미합니다. –

+0

@AnkurJain 그런 다음 inorder에 답하면 HTML 마크 업이 필요합니다. 또한 성취하려는 것을 논리로 기술하십시오. 정확히 무엇이 잘못된 것인지 알아 내려면 inorder에 있어야합니다. 1 골든 룰은이 질문에 답하는 자신을 상상하고 "이 질문에 답하는 데 필요한 모든 정보가 있습니까?" – footy

+0

많은 제안을 해주셔서 감사합니다. 다음 번엔주의를 기울 이겠습니다. 이제 전체 코드를 붙여 넣었습니다. U는 지금 그것을 확인할 수 있습니다. –

관련 문제