gpt4 book ai didi

javascript - 如何根据交通信号灯顺序切换信号灯?

转载 作者:行者123 更新时间:2023-12-03 05:09:36 25 4
gpt4 key购买 nike

我正在尝试制作一个交通灯序列,以便当我按下“更改灯”按钮时,它应该在每次按下时都会更改。但是,我已经使代码显示为红灯,但是当我按下“更改灯”按钮时,它不会更改为琥珀色和其他灯序列。

<!DOCTYPE html>
<html>
<body>
<h1>Traffic Light</h1>

<button type="button" onclick="changeLights"()>Change Lights </button>

<script>

var traffic_light = new Array(3)
var traffic_lights = 0

function lights(){
traffic_light = new Image(500,800)
traffic_light.src = "traffic_light_red.jpg";
traffic_light = new Image(500,800)
traffic_light.src = "traffic_light_redAmb.jpg";
traffic_light = new Image(500,800)
traffic_light.src = "traffic_light_green.jpg";
traffic_light = new Image(500,800)
traffic_light.src = "traffic_light_amber.jpg";
}

function changeLights() {
document.traffic_light_images.src = traffic_light[traffic_lights].src
traffic_lights++
if(traffic_lights > 3) {
traffic_lights = 0;
}

}
</script>

<img src = "traffic_light_red.jpg" name "traffic_light_images" height = "500" width = "800">

</body>
</html>

最佳答案

  • 将括号放在引号之外 onclick="changeLights"()
  • name 属性后没有 = - 您是否发现它与其他属性不同并且不是有效的 html?
  • 您正在尝试选择一个带有 JS 的 DOM 节点,该节点在插入文档之前运行(您的脚本标记在图像上方执行)
  • 您设置的宽度和高度没有单位,并且不建议这样设置宽度和高度以提高响应能力(只是建议,不是错误)。在我的示例中,我只是让图像自然适合而不指定。
  • 您没有正确地将新项目插入数组,而是将数组重新分配给新图像四次(使用 push )

var traffic_light = [];
var traffic_lights = 1;

function initLights() {
var image;

image = new Image();
image.src = "http://www.drivingtesttips.biz/images/traffic-light-red.jpg";

traffic_light.push(image);

image = new Image();
image.src = "http://www.drivingtesttips.biz/images/traffic-lights-red-amber.jpg";

traffic_light.push(image);

image = new Image();
image.src = "http://www.drivingtesttips.biz/images/traffic-lights-amber.jpg";

traffic_light.push(image);

image = new Image();
image.src = "http://www.drivingtesttips.biz/images/traffic-lights-green.jpg";

traffic_light.push(image);
}

function changeLights() {
document.traffic_light_images.src = traffic_light[traffic_lights].src;
traffic_lights++;
if (traffic_lights > 3) {
traffic_lights = 0;
}
}

initLights();
<button type="button" onclick="changeLights()">Change Lights </button>
<img src="http://www.drivingtesttips.biz/images/traffic-light-red.jpg" name="traffic_light_images">

但是,无需创建新的图像对象来切换源,并且可以简化您的代码:

const imageBasePath = 'http://www.drivingtesttips.biz/images/';
const traficLights = [
'traffic-light-red.jpg',
'traffic-lights-red-amber.jpg',
'traffic-lights-amber.jpg',
'traffic-lights-green.jpg',
];
const trafficLightImage = document.querySelector('.traffic-light-image');
let trafficLightIndex = 1;

function changeLights() {
trafficLightImage.src = imageBasePath + traficLights[trafficLightIndex];
trafficLightIndex++;
if (trafficLightIndex === traficLights.length) {
trafficLightIndex = 0;
}
}
<button type="button" onclick="changeLights()">Change Lights</button>
<img src="http://www.drivingtesttips.biz/images/traffic-light-red.jpg" class="traffic-light-image" />

关于javascript - 如何根据交通信号灯顺序切换信号灯?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41877138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com