为了账号安全,请及时绑定邮箱和手机立即绑定

为什么在FUNCTION里边无法直接读取变量

var aLi=document.getElementsByTagName('li');
	for(var i=0; i<aLi.length; i++){
		aLi[i].onmouseover=function(){
            var childnodes = this.childNodes;
            for(var j = 0; j<childnodes.length;j++){
                if(childnodes[j].nodeName=="UL"){
                   var currentnode=childnodes[j];
                   var Timeaction = setInterval(function(){
                        currentnode.style.height = currentnode.offsetHeight+10+"px";
                    },30);
                  
                }
            }

有很多个LI,LI下面有UL子元素,我想要获取到UL子元素,所以我在

var Timeaction = setInterval(function(){
                        childnodes[j].style.height = currentnode.offsetHeight+10+"px";
                    },30);

直接调用childnodes[j],结果返回结果为undefined,但是我在函数外面设置一个

var currentnode=childnodes[j];

然后再调用

currentnode.style.height = currentnode.offsetHeight+10+"px";

这样就可以调用,为什么我无法直接在函数中调用childnode[j],这个childnodes[j]应该是可以调用的呀,还有就是在function中为什么只能使用this,比如this.childNodes,才能正常调用,我使用aLi[i].childNodes就无法正常调用了,返回的是undefined的呢?

正在回答

1 回答

setInterval里面函数执行的时候,for循环已经结束,j已经是childnodes.length,所以childnodes[j]是undefined;

而之前保存的currentnode,是保存了最后一个childnodes,如果你的li下面是一个ul那就还好,如果有很多ul,那只有最后一个ul会有效果;


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
导航条菜单的制作
  • 参与学习       123899    人
  • 解答问题       813    个

水平、垂直、圆角导航条菜单,让您的技术探索之路更高效

进入课程

为什么在FUNCTION里边无法直接读取变量

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信