欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JS之ClassName属性使用

程序员文章站 2022-04-09 19:02:45
一、style与className属性的对比 在前面的style属性学习中,知道了通过style属性可以控制元素的样式,从而实现了行为层通过DOM的style属性去干预变现层显示的目地,但是这种就是不好的,而且为了实现通过DOM脚本设置的样式,你就不得不花时间去研究JavaScript函数,去寻找对 ......

一、style与classname属性的对比

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

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

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

JS之ClassName属性使用
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";
    }
}
JS之ClassName属性使用
JS之ClassName属性使用
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;
}
 
JS之ClassName属性使用

假设我们这个需要给这个效果加上一个

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

ele.style.backgroundcolor="blue";

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

二、追加class类名

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

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

JS之ClassName属性使用
function addclass(element,value) {
    if (!element.classname) {
        element.classname = value;
    } else {
        newclassname = element.classname;
        newclassname += " "; //这句代码追加的类名分开
        newclassname += value;
        element.classname = newclassname;
    }
}
JS之ClassName属性使用