(function(window){
//传参以dom(el)方式输出
var o = {
//去除空格
trim = function(str){
if(String.prototype.trim){
return str == null ? "" : String.prototype.trim.call(str);
}else{
return str.replace(/(^\s*)|(\s*$)/g, "");
}
},
//获取元素的第一个
dom = function(el, selector){
//传参为1
if(arguments.length === 1 && typeof arguments[0] == 'string'){
if(document.querySelector){
return document.querySelector(arguments[0]);
}
//传参为2
}else if(arguments.length === 2){
if(document.querySelector(arguments[0]).querySelector){
return document.querySelector(arguments[0]).querySelector(selector);
}
}
},
//反回元素的集合
domAll = function(el, selector){
if(arguments.length === 1 && typeof arguments[0] == 'string'){
if(document.querySelectorAll){
return document.querySelectorAll(arguments[0]);
}
}else if(arguments.length === 2){
if(</em>document.querySelector(arguments[0])<em>.querySelectorAll){
return document.querySelector(arguments[0]).querySelectorAll(selector);
}
}
},
//判断数组
isArray = function(obj){
if(Array.isArray){
return Array.isArray(obj);
}else{
return obj instanceof Array;
}
},
//添加事件
addEvt = function(el, name, fn, useCapture){
var useCapture = useCapture || false;
if(el.addEventListener) {
el.addEventListener(name, fn, useCapture);
}
},
//移除事件
rmEvt = function(el, name, fn, useCapture){
var useCapture = useCapture || false;
if (el.removeEventListener) {
el.removeEventListener(name, fn, useCapture);
}
},
//获取第一个元素
first = function(el, selector){
if(arguments.length === 1){
return el.children[0];
}
if(arguments.length === 2){
return this.dom(el, selector+':first-child');
}
},
//获取最后一个元素
last = function(el, selector){
if(arguments.length === 1){
var children = el.children;
return children[children.length - 1];
}
if(arguments.length === 2){
return this.dom(el, selector+':last-child');
}
},
//获取元素的index
eq = function(el, index){
return this.dom(el, ':nth-child('+ index +')');
},
//除了此元素
not = function(el, selector){
return this.domAll(el, ':not('+ selector +')');
},
//上一个元素
prev = function(el){
var node = el.previousSibling;
if(node.nodeType && node.nodeType === 3){
node = node.previousSibling;
return node;
}
},
//下一个元素
next = function(el){
var node = el.nextSibling;
if(node.nodeType && node.nodeType === 3){
node = node.nextSibling;
return node;
}
},
//事件委托匹配元素祖先元素
closest = function(el, selector){
var doms, targetDom;
var isSame = function(doms, el){
var i = 0, len = doms.length;
for(i; i<len; i++){
if(doms[i].isEqualNode(el)){
return doms[i];
}
}
return false;
};
var traversal = function(el, selector){
doms = u.domAll(el.parentNode, selector);
targetDom = isSame(doms, el);
while(!targetDom){
el = el.parentNode;
if(el != null && el.nodeType == el.DOCUMENT_NODE){
return false;
}
traversal(el, selector);
}
return targetDom;
};
return traversal(el, selector);
},
//移除元素
remove = function(el){
if(el && el.parentNode){
el.parentNode.removeChild(el);
}
},
//设置获取元素的属性
attr = function(el, name, value){
if(arguments.length == 2){
return el.getAttribute(name);
}else if(arguments.length == 3){
el.setAttribute(name, value);
return el;
}
},
//移除元素的属性
removeAttr = function(el, name){
if(arguments.length === 2){
el.removeAttribute(name);
}
},
//判断是否有class
hasCls = function(el, cls){
if(el.className.indexOf(cls) > -1){
return true;
}else{
return false;
}
},
//添加class
addCls = function(el, cls){
if('classList' in el){
el.classList.add(cls);
}else{
var preCls = el.className;
var newCls = preCls +' '+ cls;
el.className = newCls;
}
return el;
},
//删除class
removeCls = function(el, cls){
if('classList' in el){
el.classList.remove(cls);
}else{
var preCls = el.className;
var newCls = preCls.replace(cls, '');
el.className = newCls;
}
return el;
},
//添加或删除动画
toggleCls = function(el, cls){
if('classList' in el){
el.classList.toggle(cls);
}else{
if(u.hasCls(el, cls)){
u.addCls(el, cls);
}else{
u.removeCls(el, cls);
}
}
return el;
},
//获取或改变元素的值
val = function(el, val){
if(arguments.length === 1){
switch(el.tagName){
case 'SELECT':
var value = el.options[el.selectedIndex].value;
return value;
break;
case 'INPUT':
return el.value;
break;
case 'TEXTAREA':
return el.value;
break;
}
}
if(arguments.length === 2){
switch(el.tagName){
case 'SELECT':
el.options[el.selectedIndex].value = val;
return el;
break;
case 'INPUT':
el.value = val;
return el;
break;
case 'TEXTAREA':
el.value = val;
return el;
break;
}
}
},
//追加元素的方法
prepend = function(el, html){
el.insertAdjacentHTML('afterbegin', html);
return el;
},
append = function(el, html){
el.insertAdjacentHTML('beforeend', html);
return el;
},
before = function(el, html){
el.insertAdjacentHTML('beforebegin', html);
return el;
},
after = function(el, html){
el.insertAdjacentHTML('afterend', html);
return el;
},
//获取或改变html代码
html = function(el, html){
if(arguments.length === 1){
return el.innerHTML;
}else if(arguments.length === 2){
el.innerHTML = html;
return el;
}
},
//获取或改变文本
text = function(el, txt){
if(arguments.length === 1){
return el.textContent;
}else if(arguments.length === 2){
el.textContent = txt;
return el;
}
},
//对象位于页面可见内容的距离
offset = function(el){
var sl, st;
if(document.documentElement){
sl = document.documentElement.scrollLeft;
st = document.documentElement.scrollTop;
}else{
sl = document.body.scrollLeft;
st = document.body.scrollTop;
}
var rect = el.getBoundingClientRect();
return {
l: rect.left + sl,
t: rect.top + st,
w: el.offsetWidth,
h: el.offsetHeight
};
},
//动态添加style 多个样式用domAll
css = function(el, css){
if(typeof css == 'string' && css.indexOf(':') > 0){
el.style && (el.style.cssText += ';' + css);
}
if(el.length>1){
for(var i = 0;i<el.length;i++){
if(typeof css == 'string' && css.indexOf(':') > 0){
el[i].style && (el[i].style.cssText += ';' + css);
}
}
}
},
//得到元素的css
cssVal = function(el, prop){
if(arguments.length === 2){
var computedStyle = window.getComputedStyle(el, null);
return computedStyle.getPropertyValue(prop);
}
},
//json转化为字符串
jsonToStr = function(json){
if(typeof json === 'object'){
return JSON && JSON.stringify(json);
}
},
//字符串转化json
strToJson = function(str){
if(typeof str === 'string'){
return JSON && JSON.parse(str);
}
},
//添加缓存信息
setStorage = function(key, value){
if(arguments.length === 2){
var v = value;
if(typeof v == 'object'){
v = JSON.stringify(v);
v = 'obj-'+ v;
}else{
v = 'str-'+ v;
}
var ls = uzStorage();
if(ls){
ls.setItem(key, v);
}
}
},
//获取缓存信息
getStorage = function(key){
var ls = uzStorage();
if(ls){
var v = ls.getItem(key);
if(!v){return;}
if(v.indexOf('obj-') === 0){
v = v.slice(4);
return JSON.parse(v);
}else if(v.indexOf('str-') === 0){
return v.slice(4);
}
}
},
//移除缓存信息
removeStorage = function(key){
var ls = uzStorage();
if(ls && key){
ls.removeItem(key);
}
},
//清楚所有缓存信息
clearStorage = function(){
var ls = uzStorage();
if(ls){
ls.clear();
}
}
window.zhanglei = o;
})(window)