編程題:綜合等
文章目錄
1.綜合
1.1 dom節點查找
- 查找兩個節點的最近的一個共同父節點,可以包括節點自身
function commonParentNode(oNode1, oNode2) {
for(;;oNode1=oNode1.parentNode){
if(oNode1.contains(oNode2)){
return oNode1;
}
}
}
1.2 根據包名,在指定空間中創建對象
function namespace(oNamespace, sPackage) {
var pack = sPackage.split('.');
for(var i=0;i<pack.length;i++){
if(!oNamespace[pack[i]]){
oNamespace[pack[i]] ={};
}
oNamespace = oNamespace[pack[i]];
}
}
1.3 斐波那契數列函數
function fibonacci(n) {
return n>2? fibonacci(n-1)+fibonacci(n-2):1;
}
1.4 獲取字符串長度
- 如果第二個參數 bUnicode255For1 === true,則所有字符長度爲 1
否則如果字符 Unicode 編碼 > 255 則長度爲 2(在原來長度上再加1)
function strLength(s, bUnicode255For1) {
if(bUnicode255For1 === true){
return s.length;
}
for(var i=0,m=0,len=s.length; i<len; i++){
if(s.charCodeAt(i)>255)
m++;
}
return s.length+m;
}
1.5 判斷郵箱格式
function isAvailableEmail(sEmail) {
var reg=/^([\w+\.])+@\w+([.]\w+)+$/;
return reg.test(sEmail);
}
1.6 顏色字符串轉換
- 將 rgb 顏色字符串轉換爲十六進制的形式,如 rgb(255, 255, 255) 轉爲 #ffffff
- rgb 中每個 , 後面的空格數量不固定
- 十六進制表達式使用六位小寫字母
- 如果輸入不符合 rgb 格式,返回原始輸入
function rgb2hex(sRGB) {
return sRGB.replace(/^rgb\((\d+)\s*\,\s*(\d+)\s*\,\s*(\d+)\)$/g, function(a, r, g, b){
return '#' + hex(r) + hex(g) + hex(b);
});
}
function hex(n){
return n < 16 ? '0' + (+n).toString(16) : (+n).toString(16);
}
- /g 表示該表達式可以進行全局匹配。
- 不加入/g,則只返回第一個匹配,無論執行多少次均是如此,如果加入g,則第一次執行也返回第一個匹配,再執行返回第二個匹配,依次類推。
1.7 字符串字符統計
function count(str) {
var obj = {};
str.replace(/\S/g,function(s){
!obj[s]?obj[s]=1:obj[s]++;
})
return obj;
}
1.8 獲取url參數
- 使用void目的就是爲了得到javascript中的undefined,爲什麼不直接使用undefined呢?主要有2個原因:
1.使用void 0比使用undefined能夠減少3個字節;2.undefined並不是javascript中的保留字,我們可以使用undefined作爲變量名字,然後給它賦值.
2.小結
1./g表示全局匹配;
2. .replace()方法第1個參數爲匹配的字符格式,第2個參數爲將要替換的元素,一般設置匿名函數。