通过style属性来修改元素的样式,每修改一个样式,浏览器就要重新渲染一次页面,这样执行的性能是比较差的,而且以这种方式在需要修改多个样式时,也不太方便
希望一行代码可以同时修改多个样式:
可以通过修改元素的class属性来间接地修改样式,这样只需修改一次即可修改多个样式,此时浏览器只需重新渲染页面一次,且该方式使表现(css)和行为(js)进一步分离
1. 修改样式(class从 "b1" 变为 "b2")
box.className = "b2";
2. 增加样式(class从 "b1" 变为 "b1 b2")
box.className += " b2";
* 注意空格
// 定义一个函数用来向元素中添加指定的class属性值 // 参数: // obj 要添加class属性的元素 // cn 要添加的class值 function addClass(obj, cn) { // 先检查obj中是否含有cn if (!hasClass(obj, cn)) { obj.className += " " + cn; } } // 定义一个函数用于判断一个元素中是否含有指定的class属性值 function hasClass(obj, cn) { // 判断obj中有没有cn这个类 var reg = new RegExp("\\b" + cn + "\\b"); return reg.test(obj.className); } // 定义一个函数用于删除一个元素中指定的class属性值 function removeClass(obj, cn) { var reg = new RegExp("\\b" + cn + "\\b"); // 删除,不用判断,没有就删不掉 obj.className = obj.className.replace(reg, ""); } // 定义一个函数用于切换元素中的一个类,如果元素中有该类则删除,没有则添加 function toggleClass(obj, cn) { // 判断obj中是否有cn if (hasClass(obj, cn)) { removeClass(obj, cn); } else { addClass(obj, cn); } }