老师,指导一下!

老师,指导一下!

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



// 获取元素

var getElem = functionselector ){

    return document.querySelector(selector);

  }

  var getAllElem = functionselector ){

    return document.querySelectorAll(selector);

  }

  // 获取元素的样式

  var getCls = function ( element ) {

    return element.getAttribute('class');

  }

  // 设置元素的样式

var setCls = functionelement ,cls){

    return element.setAttribute('class',cls);

  }

  

  // 为元素添加样式

  var addCls = functionelement , cls ){

    var baseCls  = getCls(element);

    ifbaseCls.indexOf(cls) === -1){

        setCls(element,baseCls+' '+cls); // 注意空格

    }

    return ;

  }

  // 为元素删减样式

  var delCls = functionelement , cls){

    var baseCls  = getCls(element);

    ifbaseCls.indexOf(cls) > -1){ // 更精确的需要用正则表达式 ,因为这里只用于切换 _animate_in 所以没事

        setClselement,baseCls.split(cls).join(' ').replace(/\s+/g,' ') );

    }

    return ;

  }

  


正在回答

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

2回答

同学你好,解答如下:

1、getElem方法是利用传入的参数,获取对应的dom元素,

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

它的使用方式如下:

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

2、getAllElem方法和getElem方法类似,只是它是获取参数selector对应的所有dom元素

3、getCls方法是获取元素的类名。如下:

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

使用方式如下:

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

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

4、setCls方法,是为元素设置类名。参数element是为哪个dom元素设置类名,cls是设置成什么类名。setAttribute方法可以设置属性,使用方式是固定的,如下:

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

使用方式如下:

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

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


该方法比较粗暴,不管元素之前的类名是什么,调用该方法后,都会把类名换成最新的。比如上面的例子,元素初始的类名“box a”直接被替换成了“bbb”。有的时候,我们想让元素保留之前的类名,然后新增一些其他的类名,这个需求无法通过该方法来实现,所以又封装了addCls方法。

5、addCls方法是在元素原有类名的基础上,新增一个类名。参数element代表为哪个dom元素添加类名,cls代表新增的类名。整体的实现思路如下:

先获取元素element的原始类名,然后判断一下原始类名中是否包含新增的类名cls,如果元素本身类名中就含有cls,那么就没必要添加了。如果元素初始没有类名cls,则新增一下,如下:

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

6、delCls是删除元素类名。参数element代表为哪个dom元素删除类名,cls代表删除的类名。整体的实现思路如下:

先获取元素element的原始类名,如果原始类名中包含要删除的cls,那么就将删除cls后的类名重新赋值给element,如下:

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

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

其中split方法如下:

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

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

join方法如下:

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

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

同学再把这里听一下,会理解的更明白些。

祝学习愉快!


  • 慕仰7236035 提问者 #1

    http://img1.sycdn.imooc.com//climg/5ffd5f3909bda24806420272.jpg这个getAttribute方法,最后return的结果是不能直接conlose.log吗,要用变量来接收这个return?然后document.getElementById,获取元素的ID,才能获取到元素的属性吗


    2021-01-12 16:38:39
  • 慕仰7236035 提问者 #2

    我是不是也可以先通过ById的方法,先获取到该元素,然后再通过获取样式的方法获取样式

    2021-01-12 16:55:17
好帮手慕久久 2021-01-12 17:37:10

同学你好,解答如下:

1、可以直接使用console打印getCls的结果:

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

只是老师习惯用变量接收,再打印变量(习惯不同,写法不同而已)。

2、getAttribute这个方法,需要使用具体的dom元素来调用。即获取谁的属性,就用谁调用。所以getCls方法,设置了参数element,它就是具体的dom元素:

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

因此需要使用document.getElementById先获取dom元素(获取元素的方式不唯一,可以换成其他的方法),再传入getCls方法。
3、可以先获取元素,再调用方法,如下:

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

祝学习愉快!

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

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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