增删类名

document.writeln("<p class='test para my       a b ' align='right'>sqf1</p><div>这是一个div块</div>");
var elem = document.getElementsByTagName('p')[0];

/****************************************************************************************/
// 此方法传入0个或多个新类名,若多个,则以空格分隔开
// 示例: document.getElementsByTagName('p')[0].addClassName('a b c');
// 此方法有缺陷,空格问题。应该用数组分隔来做
Object.prototype.addClassName = function(newClassName){
    if (!newClassName.length) {
        throw new Error('不能为空啊');
    } else if (newClassName.length > 30) {
        throw new Error('新增的类名过长!');
    }
    var oldClassName = this['className'],
    resultName = oldClassName + ' ' + newClassName;
    this['className'] = resultName;
    return this['className'];
};
console.log(document.getElementsByTagName('p')[0].addClassName('ss'));  

/****************************************************************************************/
/**
*此方法有个即可以说是缺陷也可以说是有点好的地方,就是:只要运行此方法,就会去掉类名中多余的空格
*/
Object.prototype.removeClassName = function(name){
    var argsCount = arguments.length;
    var oldClassNameString = this['className'];
    // 第一步:用正则去掉多余空格(变一个或多个空格为一个空格)
    // 第二步: 去掉首尾空格,注意 | 紧挨着,不能有空格
    //然后变为数组
    var oldClassNameArray = oldClassNameString.replace(/\s+/g,' ').replace(/(^\s+)|(\s+$)/g,'').split(' ');
    console.log(oldClassNameArray);
    // 去掉类名,可以多个参数(类名)
    for (var i = 0; i < argsCount; i++) {
        for (var j = 0; j < oldClassNameArray.length; j++) {
            if (arguments[i] == oldClassNameArray[j]) {
                // 移出这个相同的类名数组项,位置j,项数1 
                oldClassNameArray.splice(j,1);
            }
        }
    }
    console.log(oldClassNameArray);
    // 然后还原为字符串类名
    var newClassNameString = oldClassNameArray.join(' ');
    this['className'] = newClassNameString; //完工!
    return this['className'];
}
console.log(document.getElementsByTagName('p')[0].removeClassName());
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值