为此,收集了自己平时常用到一些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) {