【发布时间】:2013-06-04 11:51:15
【问题描述】:
我想向我的博主显示随机帖子。
我从谷歌搜索得到了一个 javascript 并尝试了它,但随机帖子的数量不正确(应该是 10,但有时是 4,有时是 2,等等)。我试图检查发生了什么,发现 json.feed.entry [500] 抛出错误。
这是我使用的javascript
<script type="text/javascript">
function randomposts(json) {
var randarray = new Array();
var l=0;
var flag;
var numofpost=10;
var total = parseInt(json.feed.openSearch$totalResults.$t,10);
for(var i=0;i < numofpost;) {
flag=0;
randarray.length=numofpost;
l=Math.floor(Math.random()*total);
for(j in randarray){
if(l==randarray[j]){
flag=1;}
}
if(flag==0&&l!=0){
randarray[i++]=l;
}
}
// correct output
// alert(randarray);
document.write('<ul>');
// dummy for testing 500 limit
//for (var x = 0; x < numofpost; x++) {
// randarray[x]= 495 + x;
//}
for(var n in randarray){
var p=randarray[n];
var entry=json.feed.entry[p-1];
var posttitle = entry.title.$t;
for(var k=0; k < entry.link.length; k++){
if(entry.link[k].rel=='alternate'){
document.write('<li> ' + posttitle.link(entry.link[k].href) + '</li>');
}
}
}
document.write('</ul>');
}
</script>
<script src="/feeds/posts/default?alt=json-in-script&start-index=1&max-results=1000&callback=randomposts" type="text/javascript"></script>
目前我设置了var total = 500;,以便随机仅适用于前 500 个帖子。
如何解决这个问题?
更新: 我添加了 try catch 块,错误是 TypeError: Cannot read property 'title' of undefined
更新 2: 下图是控制台的快照。 json.feed.entry 500 未定义。
【问题讨论】:
-
你遇到了什么错误?
-
@KemalFadillah:添加到最后一节
-
检查“entry”..wht r u 在“var entry=json.feed.entry[p-1];”行中到达那里?
-
@Rinku 错误清楚地表明它是
undefined。 -
@KemalFadillah:我发了 800 多个帖子,生成的随机数是正确的(低于最大值)。
标签: javascript json blogger