为此,收集了自己平时常用到一些JavaScript函数,它们在其它的JS库也常见,现在整理并附上注释,方便查阅,希望对大家有所帮助。 注:假设以下所有函数都放在一个CC对象中,方便引用。 复制代码 代码如下: //这个方法相信是最常用的了, //它虽然没有选择器那么强大,但也有个小增强版,可查指定结点下ID所在的子元素 function $(id, p) { //id是否是字符串,还是一个HTML结点 var iss = id instanceof String || typeof id == "string"; if (iss && !p) return document.getElementById(id); //如果是结点的话就直接返回该结点 if(!iss) return id; //如果id与p是同一个元素,直接返回 if(p.id == id) return p; //往父结点搜索 var child = p.firstChild; while (child) { if (child.id == id) return child; //递归搜索 var v = this.$(id, child); if (v) return v; child = child.nextSibling; } //的确找不到就返回null return null; }
复制代码 代码如下: each: function(object, callback, args) { if (!object) { return object; } if (args) { if (object.length === undefined) { for (var name in object) if (callback.apply(object[name], args) === false) break; } else for (var i = 0, length = object.length; i < length; i++) if (callback.apply(object[i], args) === false) break; } else { if (object.length == undefined) { for (var name in object) if (callback.call(object[name], name, object[name]) === false) break; } else for (var i = 0, length = object.length, value = object[0]; i < length && callback.call(value, i, value) !== false; value = object[++i]) {} } return object; }
复制代码 代码如下: //数组 function isArray(obj) { return (typeof obj === "array" || obj instanceof Array); }, //字符串 function isString(obj) { return (typeof obj === "string" || obj instanceof String); }, //函数 function isFunction(obj) { return (typeof obj === "function" || obj instanceof Function); }, //数字类型 function isNumber(ob) { return (typeof ob === "number" || ob instanceof Number ); }
复制代码 代码如下: // 返回表单可提交元素的提交字符串. // 例如 // <form> // <input type="text" name="user" value="rock" /> // <input type="text" name="password" value="123" /> // </form> // 调用后就返回 user=rock&password=123 // 这些数据已经过encodeURIComponent处理,对非英文字符友好. // form元素中如果没有name,则以id作为提供字符名. function formQuery(f){ // f,一个Form表单. var formData = "", elem = "", f = CC.$(f); var elements = f.elements; var length = elements.length; for (var s = 0; s < length; ++s) { elem = elements[s]; if (elem.tagName == "INPUT") { if ( (elem.type == "radio" || elem.type == "checkbox") && !elem.checked) { continue; } } if (formData != "") { formData += "&"; } formData += encodeURIComponent(elem.name||elem.id) + "=" + encodeURIComponent(elem.value); } return formData; }