猿问

为何点击a属性的文字,图片会改变?

<!DOCTYPE html><html lang="en"><head>
    <meta charset="UTF-8">
    <title></title>
    <script>
    var n = 1;    function changePic(m){        return n = m;
    }    function change(){        var myImg = document.getElementsByTagName("img")[0];
        myImg.src = "images/0" + n + ".jpg";        if(n<5)n++;        else n=1;
    }    
    </script></head><body onload="setInterval(change,2000);">
    <img src="images/01.jpg" alt="" width="200">
    <div>
        <a href="#" onclick="changePic(1)">屋檐</a>
        <a href="#" onclick="changePic(2)">旅途</a>
        <a href="#" onclick="changePic(3)">红墙</a>
        <a href="#" onclick="changePic(4)">梅花</a>
        <a href="#" onclick="changePic(5)">宫殿</a>
    </div></body></html>

上面的代码很简单,图片每隔2秒,换一次,这个我理解。

问题是,当我点击某个a 的属性,比如旅途,图片为何会跳转到旅游这个图片呢?
changePic仅仅返回了一个数字 2 ,并没有看出会改图片?
change 和 changePic 是两个函数,changePic也无法调用change函数哈?


梵蒂冈之花
浏览 873回答 1
1回答

万千封印

n是一个全局变量。changePic并没有修改图片,他只是修改了n。在change里面,逻辑是:将图片的编号替换为n,然后将n修改为下一次的编号。那么在下一个change执行之前呢,changePic提前修改了n的值,导致change将点击的编号展示了出来。这个n就是点击时传入的。所以这是一个全局变量的运用问题。changePic没有改图片,只是改了一个变量,这个变量用于描述下一张图片的编号。点击也没有立即换图,换图还是等到了Interval的两秒到了,才通过change换图
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答