老师,帮忙解释一下
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之前并没有和某一个元素或某一段代码衔接,怎么用来判断的
正在回答
同学你好, 针对你的问题解答如下:
getAttribute是获取元素的class属性对应的值,getElementByClassName方法是获取指定类名的DOM元素, 这里只需要获取到元素所有的类名,所以使用getAttribute方法即可
老师测试源码,使用同学说的这种方法,直接设置className值也是可以实现效果的,同学可以下载源码测试一下,如果还存在疑问, 可以新建提问,将你写的完整代码直接粘贴过来,便于帮助同学准确的定位与解决问题。
isAnimateDone是老师设置的一个表示值,默认是false,表示元素没有添加done类名。
结合下图的代码简单理解就是:点击的时候,如果没有添加done类名,那么就给点击的元素添加done类名,改变样式之后,将标识isAnimateDone值修改为true

同学可以回顾视频,跟着老师写一写代码,结合代码实现的效果帮助自己更好的去理解。
如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星