遇到一个问题,在页面上有一个图片img,每次点击的时候换成两个图片中的另一个。
下面是我从网上找到的实现方法。
var images = ['images/up.png', 'images/down.png']
var obj= document.getElementById("hideimg");
obj.src = images[arguments.callee.em ^= 1];这个方法确实实现了我想要的功能,但是我有点不明白其中的道理。主要是这一句不懂:arguments.callee.em ^= 1。为什么每次点击它就能得到不同的数字?哪位高手给解释一下?jquerycallee.em

解决方案 »

  1.   

    $(function(){
       var images = ['images/up.png', 'images/down.png']
       $(img).onClick(function(){
           if($(img).attr("class")=="up"){
               $(img).attr("src",images[1]);
               $(img).removeClass();
           }else{
               $(img).attr("src",images[0]);
               $(img).addClass("up");
           }
       });
    })
    <img src="images/up.png" class="up">
      

  2.   

    ^是异或运算arguments.callee为当前方法本身
    arguments.callee.em给当前方法本身添加一个em属性第一次arguments.callee.em^=1,arguments.callee.em为undefined,结果为1,切arguments.callee.em=1
    第二次arguments.callee.em^1,arguments.callee.em为1,1^1等于0,结果为0,arguments.callee.em=0适用于这里只有2个元素的数组循环获取里面的元素具体的异或运算法则自己百度一下。