博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript之ClassName属性学习
阅读量:6688 次
发布时间:2019-06-25

本文共 1651 字,大约阅读时间需要 5 分钟。

     在前面的style属性学习中,知道了通过style属性可以控制元素的样式,从而实现了行为层通过DOM的style属性去干预变现层显示的目地,但是这种就是不好的,而且为了实现通过DOM脚本设置的样式,你就不得不花时间去研究JavaScript函数,去寻找对应修改和设置样式的有关语句。而且每添加或修改js脚本的代码量远大于我们修改css样式的代码量。

所以与其使用DOM直接改变莫个元素的样式,不如通过JavaScript代码去更新这个元素的class属性。

下面通过代码来比较这两种方式的差别:

function setStyleHeaderSiblings() {    if (!checkCompatibility()) return; //check compatibility    var heads = document.getElementsByTagName("h1");    var ele;  //defines a element for receive;    for (var i = 0; i < heads.length; i++) {        ele = getNextElement(heads[i].nextSibling);        ele.style.fontWeight = "bold";        ele.style.fontSize = "1.2em";    }}
function setStyleHeaderSiblings() {    if (!checkCompatibility()) return; //check compatibility    var heads = document.getElementsByTagName("h1");    var ele;  //defines a element for receive;    for (var i = 0; i < heads.length; i++) {        ele = getNextElement(heads[i].nextSibling);        ele.className="change";    }
css样式表 .change{
font-weight:bold; font-size:1.2em; }
 

假设我们这个需要给这个效果加上一个background-color:blue;

上面这种做法需要在js里面加如下代码:

ele.style.backgroundColor="blue";

而第二种做法则只要在样式表里加一个样式就可以实现,而且实现了样式与行为的分离,还减少了我们的代码量,所以在后期需求不确定的情况下,我建议第二种方法来动态的修改元素的样式。

 

但是通过className设置元素的样式也有一个缺陷,那就是通过className设置元素的class属性时将替换(而不是追加)该元素原有的class属性,在实际开发中往往很多时候我们需要追加class;

所以根据这个需要我们可以自定义一个方法来实现追加className的效果代码如下:

function addClass(element,value) {    if (!element.className) {        element.className = value;    } else {        newClassName = element.className;        newClassName += " "; //这句代码追加的类名分开        newClassName += value;        element.className = newClassName;    }}

 

转载于:https://www.cnblogs.com/GreenLeaves/p/5757216.html

你可能感兴趣的文章
如何做好 Android 端音视频测试?
查看>>
element 源码学习(番外篇) —— SASS五分钟快速入门
查看>>
五个非常实用的机器学习资源
查看>>
关于一个插图的翻译
查看>>
Spring Cloud构建微服务架构:分布式服务跟踪(入门)【Dalston版】
查看>>
spring 5 webclient使用指南
查看>>
【355天】跃迁之路——程序员高效学习方法论探索系列(实验阶段113-2018.01.26)...
查看>>
阿里云即将全球首发云骨干网
查看>>
Python数据分析
查看>>
一次Java字节码插桩实战
查看>>
Netflix 混沌工程手册 Part 3:实践方法
查看>>
用PVS在.NET内核中发现的缺陷
查看>>
战胜阿里和腾讯,Ripple已经获得200家跨境支付客户!
查看>>
剖析AWS CodeDeploy
查看>>
首次踏入vue坑——阅读zhihudaily-vue源码
查看>>
前端开发工具——汇总篇
查看>>
Rust编程语言的核心部件
查看>>
CSS(颜色_字体)
查看>>
用Ubuntu和RStudio Server搭建一个R语言的云平台
查看>>
Ubuntu下修改PDF默认打开程序
查看>>