2016-05-13 75 views
-1

我有一个问题。 我想在检查复选框的同时执行一个功能。如果我取消选中它,则不能再执行该功能,除非我再次选中该框。setIntervall如果复选框被选中,JS

我的代码:

<Input type="Checkbox" id="autoPlay">Autoplay</Input> 

<script type="text/JavaScript>//in the body 
var checkBox = document.getElementById("autoPlay"); 
if(checkBox.checked == true){ 
setInterval(gallery("vor"), 3000); 
} 

</script> 

我也试图与一个while循环做。但它不起作用。

+0

“不工作”。请更具体一些,并证明一个jsfiddle链接,以便我们可以调试它。我猜即使你取消了输入,你的函数也会被执行。这可能是因为你不把事件分配给输入字段:) –

+0

你应该在复选框中添加点击事件,以触发函数 – chanjianyi

+0

@noa-dev对不起,我不知道该怎么说。但它已经得到解决。 –

回答

1

绑定change事件处理程序的复选框,并根据检查的属性初始化或停止的时间间隔。

<Input type="Checkbox" id="autoPlay">Autoplay</Input> 
 

 
<script> 
 
    var checkBox = document.getElementById("autoPlay"); 
 
    var int; 
 
    checkBox.addEventListener('change', function() { // bind change event handler 
 
    if (int) clearInterval(int); // clear any previous interval 
 
    if (this.checked) { // if checked then start the interval 
 
     int = setInterval(function() { 
 
     gallery("vor"); 
 
     }, 3000); 
 
    } 
 
    }); 
 
</script>

+0

@ T.J.Crowder:为什么?有什么不对吗? –

+0

是的。这只是一个隐藏的if语句。仅仅因为它可能*以这种方式滥用'&&'运算符并不意味着这是个好主意。 :-) –

+0

@ T.J.Crowder'else if(int)clearInterval(int);'将清除以前的... –

0

HTML:

<Input type="Checkbox" id="autoPlay" onclick="check()">Autoplay</Input> 

JS:

function check() 
{ 
    if (document.getElementById('autoPlay').checked) { 
     //yourcode 
    } 
} 
相关问题