天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

JavaScript 常用函數庫詳解

為此,收集了自己平時常用到一些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;
});
}

JavaScript技術JavaScript 常用函數庫詳解,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 久久久精品久久久久久 | 久久伊人精品青青草原2021 | 国产精品视频大全 | 九色PORNY真实丨国产大胸 | 国产精品久久久久久52AVAV | 韩剧甜性涩爱 | 老熟风间由美AV在线一区二区 | 亚洲不卡视频在线观看 | 免费毛片a在线观看67194 | 中国老太60old mantv | 2020精品国产视 | 三级网站视频在线观看 | 国产毛A片啊久久久久久A | 亚洲 欧美 制服 视频二区 | 中文字幕在线播放视频 | 国产午夜不卡在线观看视频666 | 麻豆AV蜜桃AV久久 | 亚洲高清在线精品一区 | 最近中文字幕完整版高清 | 日本无码人妻精品一区二区视频 | 亚洲狠狠97婷婷综合久久久久 | 亚洲中文字幕无码一久久区 | 鲁大师影院在线视频在线观看 | 尤物99久久久合集一区区 | 亚洲网站视频在线观看 | 1区2区3区4区产品不卡码网站 | 97国内精品久久久久久久影视 | 亚洲大爷操 | 成人在线视频在线观看 | 欧美内射深插日本少妇 | 亚洲国产中文字幕在线视频 | 国产精品视频国产永久视频 | 亚洲国产免费观看视频 | 97色伦图区97色伦综合图区 | 邓奴的视频IVK| 99久久精品费精品国产一区二 | 手机免费毛片 | 九九精彩视频在线观看视频 | 美国色情三级欧美三级纸匠情挑 | GOGOGO高清在线播放韩国 | 成年人视频在线免费播放 |