实例代码: function hasClass( elements,cName ){ return !!elements.className.match( new RegExp( "(\\s|^)" + cName + "(\\s|$)") ); }; function addClass( elements,cName ){ if( !hasClass( elements,cName ) ){ elements.className += " " + cName; }; }; function removeClass( elements,cName ){ if( has 在JavaScript中,操作DOM元素的CSS类(class)是常见的任务,比如动态地为元素添加或删除样式。在ES6之前,我们通常使用原生JS的方法来实现这些功能,而不是依赖于jQuery等库。这里我们将详细讲解如何使用原生JavaScript编写`hasClass`、`addClass`和`removeClass`这三个函数,用于检测、添加和移除元素的类。 `hasClass`函数是用来检查一个DOM元素是否已经包含了指定的类名。这个函数接受两个参数,第一个是元素对象,第二个是要检查的类名。函数内部使用`className`属性获取元素的所有类名,并通过正则表达式匹配来判断是否包含指定的类。返回值是一个布尔值,表示元素是否有该类: ```javascript function hasClass(elements, cName) { return !!elements.className.match(new RegExp("(\\s|^)" + cName + "(\\s|$)")); } ``` 在正则表达式 `(\\s|^)` 和 `(\\s|$)` 中,`\\s` 匹配任何空白字符,`^` 表示字符串的开始,`$` 表示字符串的结束。这样可以确保我们在类名的开始或结束处找到匹配项,或者在其他类名之间找到它。 接下来,`addClass`函数用于向元素添加类。同样,它接受元素对象和类名作为参数。如果元素不包含指定的类(通过`hasClass`函数检查),则将类名添加到`className`属性,用空格分隔: ```javascript function addClass(elements, cName) { if (!hasClass(elements, cName)) { elements.className += " " + cName; }; } ``` `removeClass`函数用于移除元素的类。它首先检查元素是否包含该类,然后使用`replace`方法和正则表达式替换掉类名。这里的正则表达式与`hasClass`函数中的相同,用于精确匹配类名并将其替换为空格: ```javascript function removeClass(elements, cName) { if (hasClass(elements, cName)) { elements.className = elements.className.replace(new RegExp("(\\s|^)" + cName + "(\\s|$)"), " "); }; } ``` 这个`replace`方法只会替换掉第一个匹配项,因为正则表达式没有全局标志`g`。对于大多数情况,这已经足够了,因为一个元素的类名不应该重复。 总结来说,这些原生JavaScript函数提供了对DOM元素类名的基本操作,它们在不需要引入额外库的情况下,可以方便地在前端项目中使用。通过熟练掌握这些方法,开发者可以更加灵活地控制页面元素的样式和交互。在实际应用中,这些函数可以进一步优化,例如处理多个类名的情况,或者考虑兼容旧版浏览器。
- 粉丝: 8
- 资源: 951
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助