这段代码是在图片(红绿灯)之间切换,然后让它再次回到起点。第一个图像工作正常,但其他图像不会出现。
<head>
<img id="red" src="A452 Images/red light.png" width="255" height="300" />
<button onclick="fnnextimage()">change image</button>
</head>
<body>
<script>
var imgarray=[];
imgarray[0].src = "A452 Images/red traffic light.png";
imgarray[1].src = "A452 Images/yellow traffic light.png";
imgarray[2].src = "A452 Images/green traffic light.png";
function fnnextimage(){
var lightchange = 1;
lightchange = lightchange+1;
if(lightchange=3){
lightchange=1};
document.getElementById('red').src=imgarray[fnnextimage]
}
</script>
</body>
</html>
最佳答案
您的代码包含三个错误:
lightchange
应该是一个全局变量,因此您需要在函数上方声明它(就像使用imgarray
一样):var imgarray=[]; imgarray[0].src = "A452 Images/red traffic light.png"; imgarray[1].src = "A452 Images/yellow traffic light.png"; imgarray[2].src = "A452 Images/green traffic light.png"; var lightchange = 1; function fnnextimage(){
if(lightchange=3){
应为if(lightchange == 3) {
。使用=
进行赋值,使用==
进行相等性检查。您不能使用函数作为数组索引:
imgarray[fnnextimage]
应为imgarray[lightchange - 1]
(数组索引从零开始)。
总之,这应该有效:
var imgarray = [];
imgarray[0].src = "A452 Images/red traffic light.png";
imgarray[1].src = "A452 Images/yellow traffic light.png";
imgarray[2].src = "A452 Images/green traffic light.png";
// Changed: lightchange is now global
var lightchange = 1;
function fnnextimage() {
lightchange = lightchange + 1;
// Changed: compare to 3 instead of assigning 3
if(lightchange == 3){
lightchange = 1;
}
// Changed: Use correct array index
document.getElementById('red').src = imgarray[lightchange - 1];
}
关于javascript - 这个交通灯 JavaScript 代码有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34653900/