最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

從基礎(chǔ)開始建立一個(gè)JS代碼庫(kù)

 更新時(shí)間:2009年07月22日 00:10:47   作者:  
從基礎(chǔ)開始建立一個(gè)JS代碼庫(kù),更新中 有心人會(huì)領(lǐng)技術(shù)走的更遠(yuǎn)

/*
* toJSONObject函數(shù)用于將一個(gè)JSON字符串轉(zhuǎn)換成對(duì)象字面量
*/
function toJSONObject(s){
return s ? eval("(" + s + ")") : null;
}
window["Susa"]["toJSONObject"] = toJSONObject;

/*
* 讀寫和刪除cookie的三個(gè)函數(shù)
* sName:cookie的名稱;
* sValue;cookie的值;
* oExpires:cookie的有效時(shí)間;
* sPath:cookie的路徑;
* sDomain:cookie的域
* bSecure:安全標(biāo)志
*/
function setCookie(sName, sValue, oExpires, sPath, sDomain, bSecure){
var oCookie = sName + "=" + encodeURIComponent(sValue);
if (oExpires)
oCookie = "; expires=" + oExpires.toGMTString();
if (sPath)
oCookie = "; path=" + sPath;
if (sDomain)
oCookie = "; domain=" + sDomain;
if (bSecure)
oCookie = "; secure";
document.cookie = oCookie;
}
function getCookie(sName){
var re = "(?:;)?" + sName + "=([^;]*);?";
var oRe = new RegExp(re);
if (oRe.test(document.cookie)) {
return decodeURIComponent(RegExp["$1"]);
}
else {
return null;
}
}
//因?yàn)閟etCookie設(shè)置的信息和deleteCookit需要的信息一樣,可以直接使用setCookie并傳入一個(gè)過去的失效的時(shí)間(這里是1970/1/1)
function deleteCookie(sName, sPath, sDomain){ //原創(chuàng)
exp = FRI,02-Jan-1970 00:00:00 GMT ;
document.cookie = sName + "=" + encodeURIComponent(sName) + "; expires=FRI,02-Jan-1970 00:00:00 GMT";
}
window["Susa"][ setCookie ] = setCookie;
window["Susa"][ getCookie ] = getCookie;
window["Susa"][ deleteCookie ] = deleteCookie;

/*
* 兩個(gè)確定元素相對(duì)于整個(gè)文檔的x和y位置的輔助函數(shù)
*/
function pageX(elem){
elem = transformLabelID(elem); //保證elem為DOM節(jié)點(diǎn)元素
//查看是否位于根元素
return elem.offsetParent ? //如果能繼續(xù)得到上一個(gè)元素,增加當(dāng)前的偏移量并繼續(xù)向上遞歸
elem.offsetLeft + pageX(elem.offsetParent) : elem.offsetLeft;
}
function pageY(elem){
elem = transformLabelID(elem);
return elem.offsetParent ? elem.offsetTop + pageX(elem.offsetParent) : elem.offsetTop;
}
window["Susa"]["pageX"] = pageX;
window["Susa"]["pageY"] = pageY;

/*
* 確定元素相對(duì)于父親的位置的兩個(gè)函數(shù)
*/
function parentX(elem){
elem = transformLabelID(elem); //保證elem為DOM節(jié)點(diǎn)元素
//如果offsetParent是元素的父元素,則返回offsetLeft,否則需要找到元素的父親相對(duì)于整個(gè)頁面位置,并計(jì)算他們之間的差值
return elem.parentNode == elem.offsetParent ? elem.offsetLeft : pageX(elem) - pageX(elem.parentNode);
}
function parentY(elem){
elem = transformLabelID(elem);
return elem.parentNode == elem.offsetParent ? elem.offsetTop : pageY(elem) - pageY(elem.parentNode);
}
window["Susa"]["parentX"] = parentX;
window["Susa"]["parentY"] = parentY;

/*
* 獲取元素的CSS位置的輔助函數(shù),當(dāng)元素的CSS屬性position設(shè)置為absolute或者relative的時(shí)候才有意義
*/
function posX(elem){
elem = transformLabelID(elem);
return parseInt(getStyle(elem, "left")); //得到元素的left屬性的值
}
function posY(elem){
elem = transformLabelID(elem);
return parseInt(getStyle(elem, "top")); //得到元素的top屬性的值
}
window["Susa"]["posX"] = posX;
window["Susa"]["posY"] = posY;

/*
* 設(shè)置元素x和y位置(與當(dāng)前位置無關(guān))的一對(duì)函數(shù),當(dāng)元素的CSS屬性position設(shè)置為absolute或者relative的時(shí)候才有意義
*/
function setX(elem, pos){
elem = transformLabelID(elem);
elem.style.left = pos + "px"; //使用像素設(shè)置元素的left屬性
}
function setY(elem, pos){
elem = transformLabelID(elem);
elem.style.top = pos + "px"; //使用像素設(shè)置元素的top屬性
}
window["Susa"]["setX"] = setX;
window["Susa"]["setY"] = setY;

/*
* 調(diào)整元素相對(duì)于當(dāng)前位置的距離的一對(duì)函數(shù),當(dāng)元素的CSS屬性position設(shè)置為absolute或者relative的時(shí)候才有意義
*/
function addX(elem, pos){
elem = transformLabelID(elem);
setX(elem, posX(elem) + pos); //在原來left屬性值的基礎(chǔ)上加上pos
}
function addY(elem, pos){
elem = transformLabelID(elem);
setY(elem, posY(elem) + pos); //在原來top屬性值的基礎(chǔ)上加上pos
}
window["Susa"]["addX"] = addX;
window["Susa"]["addY"] = addY;

/*
* 獲取元素當(dāng)前的高度和寬度
*/
function getHeight(elem){
return parseInt(getStyle(elem, "height"));
}
function getWidth(elem){
return parseInt(getStyle(elem, "width"));
}

/*
* 即使隱藏,亦能分別獲取它潛在的完整高度和寬度的兩個(gè)函數(shù)
* 注意:如果隱藏,即display為none,而沒有設(shè)置height屬性,則返回NAN
*/
function fullHeight(elem){
elem = transformLabelID(elem);
//如果元素是顯示的,那么使用offsetHeight就能得到高度,或者使用getHeight()
if (getStyle(elem, display ) != none ) {
return elem.offsetHeight || getStyle(elem, height );
}

//否則,必須處理display為none的元素,所以重置他的css屬性以獲取更精確的讀數(shù)
var old = resetCSS(elem, {
display: ,
visibility: hidden ,
position: absolute
});
//使用clientHeight找出元素的完整的高度,如果不生效,則使用getHeight函數(shù)
var h = elem.clientHeight || getHeight(elem);
//最后恢復(fù)css的原有屬性
restoreCSS(elem, old);
//并返回完整的高度
return h;
}
function fullWidth(elem){
elem = transformLabelID(elem);
if (getStyle(elem, display ) != none ) {
return elem.offsetWidth || getStyle(elem, width );
}
var old = resetCSS(elem, {
display: ,
visibility: hidden ,
position: absolute
});
var w = elem.clientWidth || getStyle(elem, width );
restoreCSS(elem, old);
return w;
}
//兩個(gè)輔助函數(shù)
function resetCSS(elem, prop){
var old = {}; //記錄舊的屬性值
for (var i in prop) {
old[i] = elem.style[i];
elem.style[i] = prop[i];
}
return old;
}
function restoreCSS(elem, prop){
for (var i in prop) { //恢復(fù)css屬性值
elem.style[i] = prop[i];
}
}
window["Susa"]["fullHeight"] = fullHeight;
window["Susa"]["fullWidth"] = fullWidth;

/*
* 使用CSS的display屬性來切換元素可見性的一組函數(shù)
*/
function hide(elem){
elem = transformLabelID(elem);
var curDisplay = getStyle(elem, display );
if (curDisplay != "none") {
elem.$oldDisplay = curDisplay; //記錄它的display狀態(tài)
elem.style.display = none ;
}
}
function show(elem){
elem = transformLabelID(elem);
//設(shè)置display屬性的原始值,如果沒有記錄原始值,則使用block
elem.style.display = elem.$oldDisplay || block ;
}
window["Susa"]["hide"] = hide;
window["Susa"]["show"] = show;

/*
* 調(diào)節(jié)元素的透明度的函數(shù),level從0-100,0表示完全透明,100則相反
*/
function setOpacity(elem, level){
elem = transformLabelID(elem);
if (elem.filters) { //IE中設(shè)置Alpha濾鏡
elem.style.filter = alpha(opacity= + level + ) ;
}
else { //W3C的opacity屬性
elem.style.opacity = level / 100;
}
}
window["Susa"]["setOpacity"] = setOpacity;

/*
* 通過在短時(shí)間內(nèi)增加和減少高度逐步顯示隱藏元素的函數(shù),可以自定義速度,speed越大,增加的越慢
*/
function slideDown(elem, speed){
speed = speed || 100;
elem = transformLabelID(elem);
var h = fullHeight(elem); //找到元素的完整的潛在高度
elem.style.height = "0px"; //高度從0開始滑動(dòng)
//alert(elem.style.height);return;
restoreCSS(elem, elem.$old || null); //恢復(fù)原來的CSS的border樣式
show(elem); //先顯示元素
for (var i = 0; i <= speed; i += 5) {
(function(){
var pos = i;
setTimeout(function(){
elem.style.height = (pos / speed) * h + "px";
}, (pos + 1) * 10);
})();
}
}
function slideUp(elem, speed){ //(原創(chuàng))
speed = speed || 100;
elem = transformLabelID(elem);
var h = fullHeight(elem);
show(elem);
for (var i = 100; i >= 0; i -= 5) {
(function(){
var pos = i;
setTimeout(function(){
elem.style.height = (pos / speed) * h + "px";
}, (100 - pos + 1) * 10); //注意時(shí)間的設(shè)置
})();
}
elem.$old = resetCSS(elem, {
border: "none"
}); //如果DOM元素含有border屬性,則去掉border
}
window["Susa"]["slideDown"] = slideDown;
window["Susa"][ slideUp ] = slideUp;

/*
* 通過在短時(shí)間內(nèi)增加和減少透明度逐步顯示隱藏的元素的函數(shù),可以自定義速度,speed越大,增加的越慢
*/
function fadeIn(elem, speed){
speed = speed || 5;
elem = transformLabelID(elem);
setOpacity(elem, 0); //從0透明度開始
show(elem); //先顯示元素
for (var i = 0; i <= 100; i += speed) {
(function(){
var pos = i;
setTimeout(function(){
setOpacity(elem, pos);
}, (pos + 1) * 10);
})();
}
}
function fadeOut(elem, speed){ //(原創(chuàng))
elem = transformLabelID(elem);
speed = speed || 1;
setOpacity(elem, 100);
show(elem);
for (var i = 100; i >= 0; i -= speed) {
(function(){
var pos = i;
setTimeout(function(){
setOpacity(elem, pos);
}, (100 - pos + 1) * 10); //注意時(shí)間的設(shè)置
})();
}
//hide(elem);
}
window["Susa"]["fadeIn"] = fadeIn;
window["Susa"]["fadeOut"] = fadeOut;

/*
* 用以獲取鼠標(biāo)相對(duì)于整個(gè)頁面的當(dāng)前位置
*/
function getX(e){
e = e || window.event;
return e.pageX || e.clientX + document.body.scrollLeft;
}
function getY(e){
e = e || window.event;
return e.pageY || e.clientY + document.body.scrollTop;
}
window["Susa"]["getX"] = getX;
window["Susa"]["getY"] = getY;


/*
* 檢查一個(gè)必填字段是否被修改,包括復(fù)選框和單選框
*/
function required(elem){
if (elem.type == checkbox || elem.tyle == "radio") {
return getInputsByName(elem.name).numChecked;
}
else {
return elem.value.length > 0 && elem.value != elem.defaultValue;
}
}
function getInputsByName(name){
var results = []; //匹配的input元素的數(shù)組
results.numChecked = 0; //追蹤被選中元素的數(shù)量
var input = document.getElementsByTagName( input );
for (var i = 0; i < input.length; i++) {
if (input[i].name == name) {
results.push(input[i]);
if (input[i].checked) { //如果選中,則增加numChecked的值
results.numChecked++; //注意這個(gè)用法
}
}
}
return results;
}
window["Susa"]["required"] = required;

/*
* imgToggle函數(shù)用于切換鼠標(biāo)移到一個(gè)圖片上的兩種情況 (原創(chuàng))
*/
function imgToggle(elem, url){
elem = transformLabelID(elem);
elem.onmouseover = function(){
this.oldsrc = this.src;
this.src = url;
};
elem.onmouseout = function(){
this.src = this.oldsrc;
};
}
window["Susa"]["imgToggle"] = imgToggle;

/*
* textToggle函數(shù)用于切換鼠標(biāo)移到一個(gè)文本上是的兩種情況 (原創(chuàng))
*/
function textToggle(elem, prop){
elem = transformLabelID(elem);
elem.onmouseover = function(){
for (var o in prop) {
elem["style"][o] = prop[o]; //設(shè)置style屬性值
}
};
elem.onmouseout = function(){
for (var o in prop) {
elem["style"][o] = null;
}
}
}
window["Susa"]["textToggle"] = textToggle;

/*
* 可同時(shí)設(shè)置幾個(gè)HTML標(biāo)簽的css屬性setCSS函數(shù) (原創(chuàng))
*/
function setCSS(ids, props){
for (var i = 0, len = ids.length; i < len; i++) {
for (var o in props) {
document.getElementById(ids[i]).style[o] = props[o];
}
}
}
})();



// 擴(kuò)展String的方法
/*
* 重復(fù)某個(gè)字符串的函數(shù),比如: a .repeat(5),將返回 aaaaa
*/
if (!String.repeat) {
String.prototype.repeat = function(l){
return new Array(l + 1).join(this); //注意數(shù)組的含義
}
}

/*
* 刪除字符串前后的空格
*/
if (!String.trim) {
String.prototype.trim = function(){
return this.replace(/^\s+|\s+$/g, ); //學(xué)習(xí)正則的候選的語法
}
}

/*
* serialize函數(shù)遍歷訪問this對(duì)象的所有成員并將他們的值組織為一個(gè)字符串輸出
*/
function serialize(){
var output = [];
for (o in this) {
output.push(o + ":" + this[o]);
}
return output.join(",");
}

/*
* 檢測(cè)DOM何時(shí)加載完并且執(zhí)行代碼的DOM對(duì)象 (原創(chuàng))
*/
var DOM = {
done: false,
clearID: 0,
fn: [], //初始化函數(shù)的參數(shù)集合
ready: function(){ //初始化函數(shù)
for (var i = 0; i < arguments.length; i++) {
if (typeof arguments[i] == function ) {
DOM.fn.push(arguments[i]);
}
else {
continue;
}
}
if (DOM.done) { //如果加載完成,則執(zhí)行初始化函數(shù)的全部函數(shù)參數(shù)
for (var i = 0; i < this.fn.length; i++) {
DOM.fn[i]();
}
DOM.done = false;
}
else {
DOM.Interval();
}
},
Interval: function(){ //重復(fù)調(diào)用check函數(shù)
DOM.clearID = window.setInterval(DOM.check, 20);
},
check: function(){ //檢測(cè)是否加載成功
if (DOM.done) {
clearInterval(DOM.clearID);
DOM.ready();
}
else {
if (document.body && document && document.getElementsByTagName && document.getElementById) {
DOM.done = true;
}
}
}
};

相關(guān)文章

  • JS/jQuery實(shí)現(xiàn)超簡(jiǎn)單的Table表格添加,刪除行功能示例

    JS/jQuery實(shí)現(xiàn)超簡(jiǎn)單的Table表格添加,刪除行功能示例

    這篇文章主要介紹了JS/jQuery實(shí)現(xiàn)超簡(jiǎn)單的Table表格添加,刪除行功能,結(jié)合實(shí)例形式詳細(xì)分析了JS與jQuery針對(duì)Table表格添加,刪除行功能的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-07-07
  • js正則表達(dá)式驗(yàn)證郵件地址

    js正則表達(dá)式驗(yàn)證郵件地址

    這篇文章主要介紹了js正則表達(dá)式驗(yàn)證郵件地址,利用javaScript語言實(shí)現(xiàn)一下電子郵件地址驗(yàn)證程序,使用的是JavaScript語言的正則表達(dá)式庫(kù),感興趣的小伙伴們可以參考一下
    2015-11-11
  • JavaScript判斷一個(gè)變量是否是數(shù)組的五種方式總結(jié)

    JavaScript判斷一個(gè)變量是否是數(shù)組的五種方式總結(jié)

    在 JavaScript 編程中,我們經(jīng)常需要對(duì)不同類型的變量進(jìn)行判斷和處理,其中,判斷一個(gè)變量是否是數(shù)組是一項(xiàng)基本且常見的任務(wù),在本篇博客中,我們將介紹幾種常用的方式來判斷一個(gè)變量是否是數(shù)組,并探討它們的優(yōu)缺點(diǎn)以及適用場(chǎng)景,需要的朋友可以參考下
    2023-11-11
  • Web前端開發(fā)之水印、圖片驗(yàn)證碼

    Web前端開發(fā)之水印、圖片驗(yàn)證碼

    這篇文章主要介紹了Web前端開發(fā)之水印、圖片驗(yàn)證碼的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-11-11
  • 詳解maxlength屬性在textarea里奇怪的表現(xiàn)

    詳解maxlength屬性在textarea里奇怪的表現(xiàn)

    這篇文章主要介紹了maxlength屬性在textarea里奇怪的表現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2015-12-12
  • JS?的繼承方式與使用場(chǎng)景對(duì)比分析

    JS?的繼承方式與使用場(chǎng)景對(duì)比分析

    本文介紹了JavaScript中六種主要的繼承實(shí)現(xiàn)方式及其適用場(chǎng)景,并推薦在現(xiàn)代項(xiàng)目中優(yōu)先使用ES6的class繼承,每種繼承方式都有其特點(diǎn)和適用范圍,選擇合適的繼承方式對(duì)于編寫清晰、高效的JavaScript代碼至關(guān)重要,感興趣的朋友一起看看吧
    2025-02-02
  • js文字滾動(dòng)停頓效果代碼

    js文字滾動(dòng)停頓效果代碼

    javascript文字滾動(dòng)停頓效果的實(shí)現(xiàn)代碼
    2008-06-06
  • TypeScript路徑別名的配置指南

    TypeScript路徑別名的配置指南

    TypeScript 提供了路徑別名的功能,方便開發(fā)者在大型項(xiàng)目中更高效地引用模塊,減少相對(duì)路徑的冗長(zhǎng)與復(fù)雜,本文將詳細(xì)介紹如何配置路徑別名,如何結(jié)合 Vite 和 Node 環(huán)境進(jìn)行別名設(shè)置,幫助開發(fā)者在項(xiàng)目開發(fā)中更為便捷地組織代碼,需要的朋友可以參考下
    2025-03-03
  • javascript數(shù)組中的concat方法和splice方法

    javascript數(shù)組中的concat方法和splice方法

    這篇文章主要介紹了javascript數(shù)組中的concat方法和splice方法,concat方法作用合并數(shù)組,可以合并一個(gè)或多個(gè)數(shù)組,會(huì)返回合并數(shù)組之后的數(shù)據(jù),不會(huì)改變?cè)瓉淼臄?shù)組,更多相關(guān)內(nèi)容需要的小伙伴可以參考下面文章內(nèi)容
    2022-03-03
  • 使用JavaScript判斷一個(gè)元素是否在可視范圍內(nèi)的幾種方法

    使用JavaScript判斷一個(gè)元素是否在可視范圍內(nèi)的幾種方法

    在Web開發(fā)中,有時(shí)我們需要知道一個(gè)元素是否在用戶的可視范圍內(nèi),以便執(zhí)行相應(yīng)的操作,比如延遲加載圖片、實(shí)現(xiàn)懶加載、或是觸發(fā)動(dòng)畫效果, 本文將詳細(xì)介紹使用 JavaScript 如何判斷一個(gè)元素是否在可視范圍內(nèi)的幾種方法,需要的朋友可以參考下
    2024-02-02

最新評(píng)論

大荔县| 龙川县| 共和县| 梁平县| 普兰店市| 旺苍县| 寿光市| 托克托县| 文化| 华亭县| 罗甸县| 尤溪县| 来宾市| 温宿县| 镇宁| 山西省| 汉源县| 长泰县| 安岳县| 澎湖县| 钦州市| 丹阳市| 大理市| 湘阴县| 贞丰县| 忻城县| 河西区| 桂阳县| 班玛县| 安国市| 娄底市| 阳原县| 通河县| 北安市| 宜州市| 湟源县| 扶风县| 中阳县| 开化县| 德格县| 白玉县|