老师,帮忙解释一下

老师,帮忙解释一下

 var baseCls = element.getAttribute('class');

 element.setAttribute('class',baseCls.replace('_animate_init','_animate_done'));

为什么获取class的时候用的是getAttribute呢,这个的意思不应该是自定义类名的意思吗,为什么不是用的getElementByClassName呢,还有就是我试了一下直接把代码里的 

element.setAttribute('class',baseCls+' '+animateElements[i].substr(1)+'_animate_init');

element.setAttribute('class',baseCls.replace('_animate_init','_animate_done'));

element.setAttribute("class",baseCls.replace('_animate_done','_animate_init'));

这三段改成element.className=baseCls+' '+animateElements[i].substr(1)+'_animate_init';

element.className=baseCls;

element.className=baseCls+' '+animateElements[i].substr(1)+'_animate_init';

这样不起作用,是我的方法错了吗,我认为应该也可以将init的类名添加上去,当为done的时候再把类名还原的是吗,老师能不能帮忙解释一下。

var isSetAnimateClass=false; //是否有初始化元素的样式

var isAnimateDone=false;

关于这段代码,这相当于是自己设置的一个变量,他们和if里的条件的原理是什么? isSetAnimateClass和 isAnimateDone之前并没有和某一个元素或某一段代码衔接,怎么用来判断的

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好, 针对你的问题解答如下:

  1. getAttribute是获取元素的class属性对应的值,getElementByClassName方法是获取指定类名的DOM元素, 这里只需要获取到元素所有的类名,所以使用getAttribute方法即可

  2. 老师测试源码,使用同学说的这种方法,直接设置className值也是可以实现效果的,同学可以下载源码测试一下,如果还存在疑问, 可以新建提问,将你写的完整代码直接粘贴过来,便于帮助同学准确的定位与解决问题。

  3. isAnimateDone是老师设置的一个表示值,默认是false,表示元素没有添加done类名。

    结合下图的代码简单理解就是:点击的时候,如果没有添加done类名,那么就给点击的元素添加done类名,改变样式之后,将标识isAnimateDone值修改为true

    http://img1.sycdn.imooc.com/climg/5e32a51909001ed916760488.jpg

同学可以回顾视频,跟着老师写一写代码,结合代码实现的效果帮助自己更好的去理解。

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师