我是JavaScript新手,我正在試圖自動化這個交通燈序列。如果,如果else語句我用瓶坯的任務,但我無法自動化它,所以它會後,按一下按鈕連續運行:如何使用setinterval自動化JavaScript/html交通燈序列?
function changelight(){
if (current==colours[0]){
var c = document.getElementById("myCanvas")
var ctx = c.getContext("2d");
ctx.beginPath();
ctx.arc(95,50,40,10,12*Math.PI);
ctx.stroke();
ctx.fillStyle = colours[0];
ctx.fill();
var c1 = document.getElementById("myCanvas")
var ctx1 = c1.getContext("2d");
ctx1.beginPath();
ctx1.arc(95,150,40,10,12*Math.PI);
ctx1.stroke();
ctx1.fillStyle = colours[1];
ctx1.fill();
var c2 = document.getElementById("myCanvas")
var ctx2 = c2.getContext("2d");
ctx2.beginPath();
ctx2.arc(95,250,40,10,12*Math.PI);
ctx2.stroke();
ctx2.fillStyle = colours[3];
ctx2.fill();
current=colours[4];
}
else if (current==colours[4]){
var c = document.getElementById("myCanvas")
var ctx = c.getContext("2d");
ctx.beginPath();
ctx.arc(95,50,40,10,12*Math.PI);
ctx.stroke();
ctx.fillStyle = colours[3];
ctx.fill();
var c1 = document.getElementById("myCanvas")
var ctx1 = c1.getContext("2d");
ctx1.beginPath();
ctx1.arc(95,150,40,10,12*Math.PI);
ctx1.stroke();
ctx1.fillStyle = colours[3];
ctx1.fill();
var c2 = document.getElementById("myCanvas")
var ctx2 = c2.getContext("2d");
ctx2.beginPath();
ctx2.arc(95,250,40,10,12*Math.PI);
ctx2.stroke();
ctx2.fillStyle = colours[2];
ctx2.fill();
current=colours[2];
}
else if (current==colours[2]){
var c = document.getElementById("myCanvas")
var ctx = c.getContext("2d");
ctx.beginPath();
ctx.arc(95,50,40,10,12*Math.PI);
ctx.stroke();
ctx.fillStyle = colours[3];
ctx.fill();
var c1 = document.getElementById("myCanvas")
var ctx1 = c1.getContext("2d");
ctx1.beginPath();
ctx1.arc(95,150,40,10,12*Math.PI);
ctx1.stroke();
ctx1.fillStyle = colours[1];
ctx1.fill();
var c2 = document.getElementById("myCanvas")
var ctx2 = c2.getContext("2d");
ctx2.beginPath();
ctx2.arc(95,250,40,10,12*Math.PI);
ctx2.stroke();
ctx2.fillStyle = colours[3];
ctx2.fill();
current=colours[1];
}
else if (current==colours[1]){
var c = document.getElementById("myCanvas")
var ctx = c.getContext("2d");
ctx.beginPath();
ctx.arc(95,50,40,10,12*Math.PI);
ctx.stroke();
ctx.fillStyle = colours[0];
ctx.fill();
var c1 = document.getElementById("myCanvas")
var ctx1 = c1.getContext("2d");
ctx1.beginPath();
ctx1.arc(95,150,40,10,12*Math.PI);
ctx1.stroke();
ctx1.fillStyle = colours[3];
ctx1.fill();
var c2 = document.getElementById("myCanvas")
var ctx2 = c2.getContext("2d");
ctx2.beginPath();
ctx2.arc(95,250,40,10,12*Math.PI);
ctx2.stroke();
ctx2.fillStyle = colours[3];
ctx2.fill();
current=colours[0];
}
}
</script>
<br><br>
<button onclick="changelight()">Click</button>
我知道我需要在使用setInterval做到這一點,但我有不知道該怎麼做。我以前的所有嘗試都失敗了,請幫忙。
呃......'的setInterval(changelight,1000);'? –
除了需要大量清理的代碼之外(只需在函數的開頭放置'var c = document.getElementById('myCanvas'),ctx = c.getContext('2d');'並使用那個變量,而不是重複獲取相同的畫布和相同的上下文...來命名一個問題)邏輯可以使用一些工作,並且爲您的顏色命名可能是一個好主意,例如。 'color = {red:「#ff0000」,yellow:「#ffff00」,green:「#00ff00」,off:「#000000」};' –
另外,10,12 * Math.PI'對於?只需'0,Math.PI * 2'就可以... –