推荐答案
// www.javascriptcn.com code example
function addClass(element, className) {
if (element.classList) {
element.classList.add(className);
} else {
const classes = element.className.split(' ');
if (classes.indexOf(className) === -1) {
classes.push(className);
element.className = classes.join(' ');
}
}
}本题详细解读
1. 函数功能
addClass 函数用于给指定的 DOM 元素添加一个类名。如果元素已经拥有该类名,则不进行任何操作。
2. 代码解析
element.classList:现代浏览器支持classList属性,它提供了add方法,可以方便地添加类名。如果element.classList存在,则直接使用add方法添加类名。element.className:对于不支持classList的旧版浏览器,我们通过element.className来获取元素的类名字符串,然后将其拆分为数组。如果数组中不存在要添加的类名,则将其添加到数组中,最后将数组重新拼接为字符串并赋值给element.className。
3. 兼容性考虑
- 该函数考虑了浏览器的兼容性,优先使用
classList,在不支持的情况下回退到className的方式。 - 使用
indexOf来检查类名是否已经存在,避免重复添加。
4. 使用示例
const div = document.createElement('div');
addClass(div, 'my-class');
console.log(div.className); // 输出: "my-class"5. 注意事项
- 如果传入的
className包含空格,可能会导致意外的行为。因此,建议传入的类名是单一的、不包含空格的字符串。 - 该函数不会处理
className为空字符串的情况,调用时需要确保传入的className是有效的类名。