粘贴以下代码后,我的浏览器崩溃。为什么?
粘贴下面的代码后,我的浏览器崩溃了。我完全不知道为什么。我是Javascript的新手。粘贴以下代码后,我的浏览器崩溃。为什么?
这里是我的代码:
var randarray = new Array();
var l = 0;
var flag;
var numofpost = 5;
function randomposts(json) {
var total = parseInt(json.feed.openSearch$totalResults.$t, 10);
for (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;
}
}
document.write('<ul class="rp-menu">');
for (n in randarray) {
var p = randarray[n];
var entry = json.feed.entry[p - 1];
for (k = 0; k < entry.link.length; k++) {
if (entry.link[k].rel == 'alternate') {
var item = "<li>" + "<a href=" + entry.link[k].href + ">" + entry.title.$t + "</a></li>";
document.write(item);
}
}
}
document.write('</ul>');
}
的i
在你第一次for
循环增量是一个条件落后,所以如果它从未解析为true
,你就会有一个无限循环
@monster你好兄弟,你能告诉我如何解决这个问题吗?我是新的JavaScript。 –
@Noxdo:它与JavaScript无关,它与逻辑有关。您的循环将继续,直到'i'等于或大于'numpost'。如果循环之前有任何迭代,那么你永远不会增加(“添加到”)'i',循环将永远重复。所以总是增加'我'。 –
@Noxdo:那么你的条件是'if(flag == 0 && l!= 0){',这意味着如果'flag'为'0'并且'l'为'i'不'0'。看起来,当在'randarray'中设置'l'时,'flag'也被设置为相同的值,因此它们不会具有相同的值。 –
欢迎堆栈溢出。请阅读关于如何提出良好问题的常见问题解答。 “请解决这个问题并给我正确的代码”并不是一个好问题,我们希望你能够调试你的代码,你可以解释**出了什么问题,以及你试图解决的问题。 – elclanrs
此外,当请求代码帮助时,请花时间格式化您的代码。在Ask a Question页面上清晰可用的**格式帮助**很多。这次我通过http://jsbeautifier.org/为你运行你的代码。 –
@ T.J.Crowder:对不起,我在你之前开始编辑并贴在你之后,并且只知道事后发生了什么。对不起:) – DLJ