粘贴以下代码后,我的浏览器崩溃。为什么?

问题描述:

粘贴下面的代码后,我的浏览器崩溃了。我完全不知道为什么。我是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>'); 
} 
+2

欢迎堆栈溢出。请阅读关于如何提出良好问题的常见问题解答。 “请解决这个问题并给我正确的代码”并不是一个好问题,我们希望你能够调试你的代码,你可以解释**出了什么问题,以及你试图解决的问题。 – elclanrs

+1

此外,当请求代码帮助时,请花时间格式化您的代码。在Ask a Question页面上清晰可用的**格式帮助**很多。这次我通过http://jsbeautifier.org/为你运行你的代码。 –

+1

@ T.J.Crowder:对不起,我在你之前开始编辑并贴在你之后,并且只知道事后发生了什么。对不起:) – DLJ

i在你第一次for循环增量是一个条件落后,所以如果它从未解析为true,你就会有一个无限循环

+0

@monster你好兄弟,你能告诉我如何解决这个问题吗?我是新的JavaScript。 –

+1

@Noxdo:它与JavaScript无关,它与逻辑有关。您的循环将继续,直到'i'等于或大于'numpost'。如果循环之前有任何迭代,那么你永远不会增加(“添加到”)'i',循环将永远重复。所以总是增加'我'。 –

+0

@Noxdo:那么你的条件是'if(flag == 0 && l!= 0){',这意味着如果'flag'为'0'并且'l'为'i'不'0'。看起来,当在'randarray'中设置'l'时,'flag'也被设置为相同的值,因此它们不会具有相同的值。 –