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;
}
 
/**
* .
* , .
*/
Array.prototype.remove = (function(p) {
//
if (CC.isNumber(p)) {
if (p < 0 || p >= this.length) {
throw "Index Of Bounds:" + this.length + "," + p;
}
this.splice(p, 1)[0];
return this.length;
}
// ,
if (this.length > 0 && this[this.length - 1] == p) {
this.pop();
} else {
var pos = this.indexOf(p);
if (pos != -1) {
this.splice(pos, 1)[0];
}
}
return this.length;
});
 
Array.prototype.indexOf = (function(obj) {
for (var i = 0, length = this.length; i < length; i++) {
if (this[i] == obj) return i;
}
return - 1;
});
 
/**
* , JS , ,
* , .
*/
validate: function() {
var args = CC.$A(arguments),
form = null;
//form , .
if (!CC.isArray(args[0])) {
form = CC.$(args[0]);
args.remove(0);
}
// , .
//cfg.queryString = true|false;
//cfg.callback = function
//cfg.ignoreNull
//nofocus:true|false
var b = CC.isArray(b) ? {}: args.pop(),
d;
var queryStr = b.queryString,
ignoreNull = b.ignoreNull,
cb = b.callback;
var result = queryStr ? '': {};
CC.each(args,
function(i, v) {
// fomr name , id
var obj = v[0].tagName ? v[0] : form ? form[v[0]] : CC.$(v[0]);
//console.debug('checking field:',v, 'current value:'+obj.value);
var value = obj.value,
msg = v[1],
d = CC.isFunction(v[2]) ? v[3] : v[2];
//
if (!d || typeof d != 'object') d = b;
//
if (!d.ignoreNull && (value == '' || value == null)) {
// , alert
if (!d.callback) CC.alert(msg, obj, form);
// ,
//msg: ,obj: ,form: ,
else d.callback(msg, obj, form);
//
if (!d.nofocus) obj.focus();
result = false;
return false;
}
//
if (CC.isFunction(v[2])) {
var ret = v[2](value, obj, form);
var pass = (ret !== false);
if (CC.isString(ret)) {
msg = ret;
pass = false;
}
if (!pass) {
if (!d.callback) CC.alert(msg, obj, form);
//
else d.callback(msg, obj, form);
if (!d.nofocus) obj.focus();
result = false;
return false;
}
}
// queryString , form, ,
// {elementName|elementId:value} .
if (queryStr && !form) {
result += (result == '') ?
((typeof obj.name == 'undefined' || obj.name == '') ? obj.id: obj.name) +
'=' + value: '&' + v[0] + '=' + value;
} else if (!form) {
result[v[0]] = value;
}
});
// queryString:true , form .
if (result !== false && form && queryStr) result = CC.formQuery(form);
return result;
}
 
/**
*
* templ({name:'Rock'},'<html><title>{name}</title></html>');
* st:0,1:
*/
templ: function(obj, str, st) {
return str.replace(/\{([\w_$]+)\}/g, function(c, $1) {
var a = obj[$1];
if (a === undefined || a === null) {
if (st === undefined) return '';
switch (st) {
case 0:
return '';
case 1:
return $1;
default:
return c;
}
}
return a;
});
}

좋은 웹페이지 즐겨찾기