2016-05-13 73 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 
    } 
} 
相關問題