js添加样式class

最近在看js,好好打基础才是王道,底层的东西不容忽视。

Js添加样式名,在用jQuery的时候很容易的一个add和remove就能解决的问题,但是用js该怎么样处理呢,刚看了一篇文章,菜鸟级的《JavaScript初学者应注意的七个细节》,原文地址

http://developer.51cto.com/art/201101/242546_2.htm 里面有一段就写了这样一个东西:修改样式名,我稍微做了下扩展。

一、

function addclass(elm,newclass){
  var c = elm.className;
  if(c!="")
  elm.className=newclass;
}

写个函数然后传入对象元素跟样式名字,判定是否为空,如果不为空就赋值样式名字;

二、

function addclass(elm,newclass){
  var c = elm.className;
  elm.className = (c =="") ? newclass : c+‘ ‘+newclass;
}

写个函数然后传入对象元素跟需要添加到样式名字,判定是否为空,如果为空就赋值,否则就加个空格再赋值;

三、

function addclass(elm,newclass){
  var classes = elm.className.split(‘ ‘);
  classes.push(newclass);
  elm.className = classes.join(‘ ‘);
}

传入对象元素跟样式名字,然后把elm.className看成用“ ”(空格)分割的字符串,用split去除空格变成数组,然后用push方法添加样式到数组中,用join添加空格变成字符串再赋值给元素的class,很独特很棒的方法。

然而,我觉得有点不足,假如元素本来就有newclass这类名,那怎么办?就像这样:

然后我想添加个div2类给这个div,如果用第三种方法,虽然不会出错,但页面显示会变成这样

,于是我用第四种方法:

**四、**

function zhen(obj,claName){
  var cla=obj.className.split(" ");
  for(var i=0;i<cla.length;i++)
  {
    if(cla[i]==claName)
    return;
  }
  cla.push(claName);
  obj.className=cla.join(" ");
}

继承第三种方法的优势,在其基础上做了个循环判定,保证没有重复的名字存在。

时间: 2024-11-04 09:27:17

js添加样式class的相关文章

JavaScript 应用开发 #5:为完成的任务添加样式

判断一下任务的状态,如果是完成的任务,可以在任务项目的上面,添加一个额外的 css 类,在这个 css 类里,可以去定义完成的任务的样式.比如,把文字的颜色变成浅友色,并且在文字上面添加一条删除线.这些样式,已经在应用的样式表里定义好了,放在了一个叫 .completed 的 css 类里面.下面,我们要做的就是把这个类添加到是完成的状态的任务项目上去. 要解决的问题 怎么样得到模型的属性的值. 怎么样为模型添加合适的 css 类. 怎么样在任务模型的完成状态发生变化时,立即更新任务项目的显示.

css基础 给一个标记的后代中 指定的标签 或者指定标签的指定class名称 添加样式 (后代多级的)

镇场诗: 清心感悟智慧语,不着世间名与利.学水处下纳百川,舍尽贡高我慢意. 学有小成返哺根,愿铸一良心博客.诚心于此写经验,愿见文者得启发.------------------------------------------ex1: code: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8&

js添加css属性导致:hover无效的解决办法

这其实是css的优先级导致的. js添加的属性是直接在标签增加style属性,优先级高于样式表的#和.选择器.style>id>class. 但是:hover伪类也失效了.说明style>css伪类>id>class. 给:hover的属性后面添加!important就可以了. color: #fff !important; 设置了!important的样式优先级高于一切. !important>style>id>class

css 利用文档结构给列表添加样式

最近做项目,客户提出一个需求,让新闻列表的前三个条目加粗显示.由于新闻列表每天都有更新,所以就利用文档结构来给列表添加样式. 下面以一个简单列表为例,让前三列的前景色显示为红色. 首先是列表代码: <!DOCTYPE html> <html> <head> <meta charset = 'utf-8'/> <title>ul</title> </head> <body> <ul> <li&g

js css样式操作代码(批量操作)

js css样式操作代码(批量操作) 作者: 字体:[增加 减小] 类型:转载 时间:2009-10-09 用js控制css样式,能让网页达到良好的的用户体验甚至是动画的效果.并且考虑到效率. 我们用js书写css样式通常会用下面的两种方式: 一般情况下我们用js设置元素对象的样式会使用这样的形式: 复制代码 代码如下: var element= document.getElementById(”id”); element.style.width=”20px”; element.style.he

原生js添加class

function hasClass(obj, cls) { return obj.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)')); } function addClass(obj, cls) { if (!this.hasClass(obj, cls)) obj.className += " " + cls; } function removeClass(obj, cls) { if (hasClass(obj, cls

HTML添加样式三种办法

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <meta http-equiv="X-UA-Compatib

用JS添加文本框案例代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

JS添加节点方法与JQuery添加节点方法的比较及总结

原生JS添加节点方法与JQuery添加节点方法的比较及总结 一.首先构建一个简单布局,来供下边讲解使用 1.HTML部分代码: <div id="div1">div1</div> <div id="div2">div2 <span id="span1">span1</span> <span id="span2">span2</span> <