Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 粘贴以下代码后,我的浏览器崩溃。为什么?_Javascript_Browser_Crash - Fatal编程技术网

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

Javascript 粘贴以下代码后,我的浏览器崩溃。为什么?,javascript,browser,crash,Javascript,Browser,Crash,粘贴以下代码后,我的浏览器崩溃。我完全不知道为什么。我是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;)

粘贴以下代码后,我的浏览器崩溃。我完全不知道为什么。我是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>');
}
var randarray=new Array();
var l=0;
var标志;
var numofpost=5;
函数(json){
var total=parseInt(json.feed.openSearch$totalResults.$t,10);
对于(i=0;i”);
for(数组中的n){
var p=随机数组[n];
var entry=json.feed.entry[p-1];
对于(k=0;k”+“”;
文件。书写(项目);
}
}
}
文件。写(“”);
}

第一个
for
循环中的
i
增量是在一个条件之后,因此如果它从未解析为
true
,您将有一个无限循环

欢迎使用StackOverflow。请阅读有关如何提出好问题的常见问题。“请解决这个问题,并给我正确的代码”不是一个好问题,我们希望您调试代码,解释出什么地方出了问题,以及您试图修复它。此外,在寻求代码方面的帮助时,请花时间以可读的方式格式化代码。“提问”页面上有很多格式辅助工具。这次我已经为您运行了您的代码。@T.J.Crowder:对不起,我在您之前开始编辑,在您之后发布,直到后来才意识到发生了什么。抱歉:)如果您的目的是在数组中的给定范围内保留一个唯一的随机数,那么有更好的方法。我猜您的数组长度(
numofost
)大于可能的数字范围(
0-total
),因此您在数组中没有可放入的唯一数字,导致了无限循环。@monster你好,兄弟,我是javascript新手。你可以编辑我的所有代码,并给我正确的代码,以便我可以在我的模板中使用。请兄弟给我正确的密码。@monster你好,兄弟,你能告诉我怎么解决这个问题吗?我是javascript新手。@Noxdo:它与javascript无关,它与逻辑有关。循环将继续,直到
i
等于或大于
numpost
。如果在此之前有任何循环的迭代,而您从未递增(“add to”)
i
,则循环将永远重复。所以总是递增
i
@Noxdo:你的条件是
if(flag==0&&l!=0){
,这意味着
i
增加的唯一方法是如果
标志
0
,而
l
不是
0
。似乎在
randarray
中设置并找到
l
时,
标志
也设置为相同的值,因此它们不会具有相同的值。