2014-12-06 5 views
0

Chrome 콘솔에 'toggleOnlyRelatedPosts is not defined'가 계속 표시되어 스크립트가 작동하지 않습니다. 나는이 스크립트를 작성 중이며 너무 많은 변수를 추가 한 후에 분실했습니다. 나는 이런 종류의 일에 능숙하지 않고 나에게 그것은 분명하게 정의되어있는 것처럼 보였지만 그것이 아닌 것 같아요.정의되지 않은 변수 document.write에서

<script type="text/javascript"> 
    //<![CDATA[ 
    function postGrabber(json) { 

      // The Magic 
      for (var i = 0; i < json.feed.entry.length; i++) { 
       for (var j = 0; j < json.feed.entry[i].link.length; j++) { 
        if (json.feed.entry[i].link[j].rel == 'alternate') { 
         var postUrl = json.feed.entry[i].link[j].href; 
         break; 
        } 
       } 

      // Thumbnail Stuff 
      var orgImgUrl = json.feed.entry[i].media$thumbnail.url ? json.feed.entry[i].media$thumbnail.url : 'http://1.bp.blogspot.com/-mxinHrJWpBo/VD6fqbvI74I/AAAAAAAAcn8/LslulDeOROg/s72-c/noimage-chalkboard.jpg'; 
      var newImgUrl = orgImgUrl.replace('s72-c', 's' + imgSize + '-c'); 
      var imgTag = '<a class="item-link-post" href="' + postUrl + '"><img class="item-img-thumbnail" src="' + newImgUrl + '" width="' + imgSize + '" height="' + imgSize + '"/></a>'; 

      var authorName = json.feed.entry[i].author[0].name.$t; 
      var authorURL = json.feed.entry[i].author[0].uri.$t; 
      var authorOriImgUrl = json.feed.entry[i].author[0].gd$image.src; 
      var authorNewImgUrl = authorOriImgUrl.replace('s512-c', 's' + authorImgSize + '-c'); 
      var authorImgTag = '<a class="item-link-author" href="' + authorURL + '" target="_blank" rel="nofollow"><img class="item-img-author" src="' + authorNewImgUrl + '" alt="' + authorName + '"/></a>'; 

      var postLabel = json.feed.category[i].term; 
      var postLabelUrl = '/-/' + postLabel + ''; 

      // Standard Stuff 
      var postTitle = json.feed.entry[i].title.$t; 
      var postCommentCount = json.feed.entry[i].thr$total.$t; 

      var postSummary = json.feed.entry[i].summary.$t; 
      var entryShort = postSummary.substring(0, '' + summaryLength + ''); 
      var entryEnd = entryShort.lastIndexOf(" "); 
      var postContent = entryShort.substring(0, entryEnd) + '...'; 

      var postDate = json.feed.entry[i].updated.$t ? json.feed.entry[i].updated.$t : json.feed.entry[i].published.$t; 
      var shortDate = postDate.substring(0,10); 

      // Let's Make Options Here 
      var toggleImg = showImg ? '' + imgTag + '' : ''; 
      var toggleTitle = showTitle ? '<h1 class="item-title">' + postTitle + '</h1>' : ''; 
      var toggleSummary = showSummary ? '<p class="item-snippet">' + postContent + '</p>' : ''; 
      var toggleDate = showDate ? '<span class="item-date">' + shortDate + '</span>' : ''; 
      var toggleAuthorImg = showAuthorImg ? '' + authorImgTag + '' : ''; 
      var toggleCommentCount = showCommentCount ? '<span class="item-comment-count">' + postCommentCount + '</span>' : ''; 


      var toggleOnlyRelatedPosts = showOnlyRelatedPosts ? '' + postLabelUrl + '' : ''; 

      // The Output 
      var itemPost = '<div class="item-post"><div class="item-imgs">' + toggleImg + toggleAuthorImg + '</div>' + toggleCommentCount + '<a class="item-link" href=' + postUrl + '>' + toggleTitle + '</a>' + toggleSummary + toggleDate + '</div>'; 

      // Let's Write It Down 
      document.write(itemPost); 
     } 
    } 
    //]]> 
</script> 
<script type="text/javascript"> 
    //<![CDATA[ 
    var imgSize = 96; 
    var summaryLength = 142; 
    var authorImgSize = 36; 
    var showImg = true; 
    var showTitle = true; 
    var showSummary = true; 
    var showDate = true; 
    var showAuthorImg = true; 
    var showCommentCount = true; 
    var showOnlyRelatedPosts = true; 
    document.write('<script type="text/javascript" src="/feeds/posts/summary' + toggleOnlyRelatedPosts + '?orderby=published&amp;max-results=5&amp;alt=json-in-script&amp;callback=postGrabber"><\/script>'); 
    //]]> 
</script> 
+0

참고로 'var a = 1, var b = 2, ... var z = n'대신 'var a = 1, b = 2, ... z = n' –

답변

1

변수 toggleOnlyRelatedPosts이 기능 postGrabber의 범위에 선언 된 크롬은 document.write를 여기

에서 오류를 표시하는 스크립트입니다. 따라서 실제로 사용하려고 시도하는 행에 document.write이 정의되어 있지 않습니다.

함수 밖에서 변수를 사용하려면 함수 외부에서 변수를 선언해야합니다.

Read up on the concept of 'scope'은 모든 프로그래밍 언어에서 매우 기본적인 지식입니다.