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

为什么不能用这个?http://www.imooc.com/video/3233

    function getclsname(clsname,parent){
    	var oparent=parent?document.getElementById(parent):document,
    		eles=[],
    		elements=oparent.getElementsByTagName('*');
    	for(var i=0;i<elements.length;i++){
    		if(elements[i].className==clsname){
    			eles.push(elements[i]);
    		}
    	}
    	return eles;
    }
    function getstyle(ele,sty){
    	if(ele.currentStyle){
    		return ele.currentStyle[sty];
    	}else{
    		return window.getComputedStyle(ele,null)[sty];
    	}
    }
    
    
        window.onload = function () {
        	var lis=document.getElementsByTagName('li');
        	//console.log(getclsname('toptitle',null)[0]);
        	var div_1=getclsname('toptitle',null)[0];//document.getElementsByTagName('ul')[0].getElementsByTagName('div')[0],
        		wd=parseInt(getstyle(div_1,'height'));
        	for(var i=0;i<lis.length;i++){
        		lis[i].onmouseover=function(){
        			this.getElementsByTagName('div')[0].style.display='block';
        			this.getElementsByTagName('span')[0].className='my_span';
        			var a=this.getElementsByTagName('div')[0].offsetHeight;
        			//var a=this.getclsname('submenu',null)[0];
        			console.log(a);
        		}
        		lis[i].onmouseleave=function(){
        			this.getElementsByTagName('div')[0].style.display='none';
        			this.getElementsByTagName('span')[0].className='';
        		}
        		var h=i*parseInt(getstyle(lis[i],'height'))+wd;
        	}
        }

这一段的,this.getclsname('submenu',null)[0];,

这句会报错:Uncaught TypeError: this.getclsname is not a function,

如果换成了,this.getELementsByTagName('div')[0]就没有问题呢?

非常感谢!

正在回答

1 回答

var _this=this;

getclsname('submenu',_this)[0]  这样可以么 ?我也没试过啊  那个有onmouseleave事件吗 ?

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

飞天意大利面神兽 提问者

getclsname()是我封装的用classname获取元素的方法
2016-07-09 回复 有任何疑惑可以回复我~
#2

orange_cheng 回复 飞天意大利面神兽 提问者

我试了下 如果你的classname名称不止一个 例如:class=“name1 name2” 这种利用类名获取元素方法好像会有问题
2016-07-09 回复 有任何疑惑可以回复我~
#3

飞天意大利面神兽 提问者 回复 orange_cheng

嗯,所以后面会有getcls('classname',null)[]的[]。
2016-07-09 回复 有任何疑惑可以回复我~
#4

orange_cheng 回复 飞天意大利面神兽 提问者

我看了你的封装的函数 我发现我之前那个写错了,不好意思 嘿嘿 getclsname()的第二个参数 应该是父元素的id名称,我I搞错了 不过我觉得使用这个封装的函数是应该把前面的"this." 去掉。
2016-07-09 回复 有任何疑惑可以回复我~
#5

orange_cheng 回复 飞天意大利面神兽 提问者

我的意思是一个元素的类名有多个,是这样的 如 class=“name1 name2 name3", 而不是多个元素拥有相同的classname,加[]能选中多个元素拥有相同classname的其中一个元素 ,但当一个元素含有多个classname的情况时,好像 就出问题了
2016-07-09 回复 有任何疑惑可以回复我~
查看2条回复

举报

0/150
提交
取消

为什么不能用这个?http://www.imooc.com/video/3233

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