2016-11-29 25 views
3

我有一个小实验设置,我正在编辑创建一个随机出现的div,当您单击它时消失。我遇到了问题,每次单击它时,都会强制变量“x”成为与数组不同的数字。相反,它会在开始时从数组中挑选一个数字并在整个时间内坚持使用它。设置一个数组以选择不同的变量onclick

DIV:

<div id="div" onclick="hide()" style="visibility:hidden;">Doge</div> 

JS:

<script type = "text/javascript"> 

var interval = [5000, 1000, 10000, 6000, 500]; 
var x = interval[Math.floor(Math.random() * interval.length)]; 
setInterval(function(){ 
document.getElementById('div').style.visibility = "visible"; 
},x); 

function hide(){ 
document.getElementById('div').style.visibility = "hidden"; 
var x = interval[Math.floor(Math.random() * interval.length)]; 
} 

</script> 

每次单击我希望它在不同的时间间隔重新出现在div。

+0

为什么有2脚本标签 – Mahi

+0

@Mahi固定,缩短它 –

回答

1

setIntervaldelay值,并使用,对于每一个间隔。它不受更新变量的影响。你想要的是setTimeout,你每次调用hide函数时都会设置它。

var interval = [5000, 1000, 10000, 6000, 500]; 
var div = document.getElementById('div'); 

function hide(){ 
    div.style.visibility = "hidden"; 
    showIn(randomInterval()); 
} 

function randomInterval() { 
    return interval[Math.floor(Math.random() * interval.length)]; 
} 

function showIn(delay) { 
    setTimeout(function() { 
    div.style.visibility = "visible"; 
    }, delay); 
} 

// call directly in the beginning to show the div 
showIn(randomInterval()); 
+0

它工作完美!感谢@Paul S的帮助! –

0

问题在于你的随机世代数,大部分时间都是一次又一次地重复相同的值。

Link of your random number generation output

尝试解决这一点,再试一次。

+0

这并迫使它喷出每次数组中不同的变量,但我试图让时间变量“X”中的“ setinterval'每次都是不同的时间。 –

0

<script type = "text/javascript"> 
 

 
var interval = [5000, 1000, 10000, 6000, 500]; 
 
var x = interval[Math.floor(Math.random() * interval.length)]; 
 
setInterval(function(){ 
 
document.getElementById('div').style.visibility = "visible"; 
 
},x); 
 

 
function hide(){ 
 
document.getElementById('div').style.visibility = "hidden"; 
 
var x = interval[Math.floor(Math.random() * interval.length)]; 
 
setInterval(function(){ 
 
document.getElementById('div').style.visibility = "visible"; 
 
},x); 
 
} 
 

 
</script>

+0

这个div并没有在开头显示@Mahi –

+0

这可能是因为为了给setinterval一段时间,它需要预先定义一些东西。 @Mahi –

+0

看到我的编辑,如果不工作,然后显示给我们你的片段或小提琴 – Mahi

相关问题