经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » HTML/CSS » CSS » 查看文章
JS之ClassName属性使用
来源:cnblogs  作者:JoeJoan  时间:2018/11/30 9:18:30  对本文有异议

一、style与className属性的对比

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

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

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

复制代码
  1. function setStyleHeaderSiblings() {
  2. if (!checkCompatibility()) return; //check compatibility
  3. var heads = document.getElementsByTagName("h1");
  4. var ele; //defines a element for receive;
  5. for (var i = 0; i < heads.length; i++) {
  6. ele = getNextElement(heads[i].nextSibling);
  7. ele.style.fontWeight = "bold";
  8. ele.style.fontSize = "1.2em";
  9. }
  10. }
复制代码
复制代码
  1. function setStyleHeaderSiblings() {
  2. if (!checkCompatibility()) return; //check compatibility
  3. var heads = document.getElementsByTagName("h1");
  4. var ele; //defines a element for receive;
  5. for (var i = 0; i < heads.length; i++) {
  6. ele = getNextElement(heads[i].nextSibling);
  7. ele.className="change";
  8. }
  1. css样式表
    .change{
    font-weight:bold;
    font-size:1.2em;
    }
  1.  
复制代码

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

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

  1. ele.style.backgroundColor="blue";

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

二、追加class类名

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

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

复制代码
  1. function addClass(element,value) {
  2. if (!element.className) {
  3. element.className = value;
  4. } else {
  5. newClassName = element.className;
  6. newClassName += " "; //这句代码追加的类名分开
  7. newClassName += value;
  8. element.className = newClassName;
  9. }
  10. }
复制代码
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号