js实现红黄绿灯的间隔时间通过代码进行人为设置,输入框设置时间,设置后按照设置的时间进行红绿灯切换。
时间: 2023-07-16 22:16:02 浏览: 56
以下是一个简单的实现红黄绿灯的代码,可以通过输入框设置时间,然后按照设置的时间进行红绿灯切换:
HTML代码:
```
<label>红灯时长:</label>
<input type="number" id="redTime" value="10" min="1" max="60" step="1">秒
<br>
<label>黄灯时长:</label>
<input type="number" id="yellowTime" value="3" min="1" max="60" step="1">秒
<br>
<label>绿灯时长:</label>
<input type="number" id="greenTime" value="15" min="1" max="60" step="1">秒
<br>
<button onclick="start()">开始</button>
<button onclick="stop()">停止</button>
<div id="trafficLight"></div>
```
JavaScript代码:
```
var redTime, yellowTime, greenTime, intervalId;
function start() {
if (intervalId) {
clearInterval(intervalId);
}
redTime = document.getElementById('redTime').value;
yellowTime = document.getElementById('yellowTime').value;
greenTime = document.getElementById('greenTime').value;
var trafficLight = document.getElementById('trafficLight');
var colors = ['red', 'yellow', 'green'];
var index = 0;
trafficLight.className = colors[index];
intervalId = setInterval(function() {
index++;
if (index >= colors.length) {
index = 0;
}
trafficLight.className = colors[index];
switch (index) {
case 0:
setTimeout(function() {
trafficLight.className = 'yellow';
}, redTime * 1000);
break;
case 1:
setTimeout(function() {
trafficLight.className = 'green';
}, yellowTime * 1000);
break;
case 2:
setTimeout(function() {
trafficLight.className = 'red';
}, greenTime * 1000);
break;
}
}, (parseInt(redTime) + parseInt(yellowTime) + parseInt(greenTime)) * 1000);
}
function stop() {
clearInterval(intervalId);
var trafficLight = document.getElementById('trafficLight');
trafficLight.className = '';
}
```
这个代码中,我们首先获取了三个输入框的值,分别表示红灯、黄灯和绿灯的时长。然后,我们使用一个数组 `colors` 来表示红黄绿三种颜色。我们使用一个变量 `index` 来表示当前是哪种颜色,初始值为0,即红灯。
我们使用 `setInterval` 来定时切换红黄绿三种颜色。在每次切换时,我们将 `index` 加1,然后根据 `index` 的值来设置 `trafficLight` 的 `className`。在这之后,我们使用 `setTimeout` 来定时切换到下一个颜色。注意,在切换到红灯时,我们需要使用 `setTimeout` 来定时切换到黄灯,因为红灯和黄灯是连续的。最后,我们使用 `(parseInt(redTime) + parseInt(yellowTime) + parseInt(greenTime)) * 1000` 来计算定时器的时间间隔,以及使用 `clearInterval` 来停止定时器。
最后,我们添加了两个按钮,一个用于开始红黄绿灯的切换,另一个用于停止切换。我们还添加了一个 `div` 元素,用于显示红黄绿灯的颜色。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)