有三种情况需要考虑
- 节点没有样式,直接追加
- 节点有样式:
- 节点已经包含了这个样式,直接返回
- 节点没有包含这个样式,获取到现有样式后进行字符串连接,注意中间要有空格,在添加到样式上
//添加class Base.prototype.addClass = function(str) { var hasClass=function hasClass(str, substr) { return str.match(new RegExp('(\s|^)'+substr+'(\s|$)'))? true : false; } for (var i = 0; i < this.elements.length; i++) { var className = this.elements[i].className; if (className) { //如果有class名了,追加样式 if (hasClass(className, str)) { return this; } else { this.elements[i].className = className + " " + str; } } else { this.elements[i].className = str; } } return this; }