<html> 
<head> 
<title>random</title> 
<script type="text/javascript"> 
var shu = []; 
var a = 0; 
while(shu.length<7){  
var x = Math.round(Math.random() * 10); 
if(x < 7){ 
for(var i=0; i<shu.length; i++){ 
if(shu[i] == x){ 
a = 1; 


}   
if(a != 1){ 
shu.push(x); 

}   
for(var i=0; i<shu.length; i++){ 
document.write("<p>" + shu[i] + "</p>"); 
}  
</script> 
</head> 
<body> 
</body> 
</html>就是运行的时间会浏览器会死掉

解决方案 »

  1.   

    var shu = []; 有这样的写法?第一次见!
      

  2.   

    shu.length永远为0,死循环了。
      

  3.   

    你那个a一直等于1了,陷入死循环了。var shu = [];             
    var a = 0;             
    while(shu.length<7){                     
        var x = Math.round(Math.random() * 10);                 
        if(x < 7){                     
            for(var i=0; i<shu.length; i++){                         
                if(shu[i] == x){                             
                    a = 1;                         
                }                     
            }                 
        }                                  
        if(a != 1){                     
            shu.push(x);                 
        }
        a=0;             
    }                          
    for(var i=0; i<shu.length; i++){                 
        document.write("<p>" + shu[i] + "</p>");             
    }  
      

  4.   

    var obj = {}; 代替 var obj = new Object();
    var arr = []; 代替 var arr = new Array();
      

  5.   

    4楼说的对,也可以这样改:
    var shu = [];             
    var a = 0;             
    while(shu.length<7){ 
        var x = Math.round(Math.random() * 10);                 
        if(x < 7){                     
            a = 0;//这里把a复位,就可以避免死循环
            for(var i=0; i<shu.length; i++){                         
                if(shu[i] == x){                             
                    a = 1;                         
                }                     
            }                 
        }                                  
        if(a != 1){                     
            shu.push(x);                 
        }
                
    }                          
    for(var i=0; i<shu.length; i++){                 
        document.write("<p>" + shu[i] + "</p>");             
    }
      

  6.   

    我同意5楼的看法,
    var my_array = new Array();
    而且for 里边应该的变量应该不用声明吧
    for (i = 0; i < 10; i++) {
       myarray[i] = i;
    }
      

  7.   

    for(var i=0; i<shu.length; i++){                         
    if(shu[i] == x){                             
    a = 1;                         
    }   你for循环里面的语句永远执行不到,因为 i<shu.length 这句一开始就不成立,所以数组里不会有值,长度为零但是while(shu.length<7)却不停的判断执行,死循环,浏览器崩溃            
      

  8.   

    扯淡
    而且for 里边应该的变量应该不用声明吧
    这样i就成了全局变量,虽然对本方法无影响,但绝对不是什么好主意,别的在用i的时候还有你这次的值
      

  9.   

    扯淡,shu.push(x);每执行一次,shu.length就加1。这个代码的错误在于没有把a复位,一旦为1,永远为1不过顺便说一下,javascript数组的length属性只是反映最大容量,所以不可靠,不一定能正确反映元素的个数,如果一直往数组里插数据没事,如果有splice或delete操作,length保持不变。
      

  10.   

    var shu = [];           
    while(shu.length<7){          
    var a = 0;                          
    var x = Math.round(Math.random() * 10);                 
    if(x < 7){                     
    for(var i=0; i<shu.length; i++){                         
    if(shu[i] == x){                             
    a = 1;                         
    }                     
    }                 
    }     
    console.log(a);                             
    if(a != 1){                     
    shu.push(x);      
    }      
    }                          
    for(var i=0; i<shu.length; i++){                 
    document.write("<p>" + shu[i] + "</p>");             
    }  
      

  11.   

    你也是在扯淡,数组的splice会改变length,另外说的delete,并非数组的方法,没人让你去用。。
      

  12.   

    当 var x = Math.round(Math.random() * 10);    x随即后四舍五入为0 的时候,就将a的值赋为1了。这个时候数组长度还没有大于7的话,就只能先入死循环了,a!=1不会成立,你的数组长度永远不会变了 。