javascript 常用小技巧
阿新 • • 發佈:2018-11-12
注意
第一行總是寫上’use strict’;是因為我們總是以嚴格模式執行JavaScript程式碼,避免各種潛在陷阱。
'use strict';
console.log('Hello, world.');
物件和字串的轉換
var obj = {a: 'aaa', b: 'bbb'};
var objStr = JSON.stringify(obj); // "{"a":"aaa","b":"bbb"}"
var newObj = JSON.parse(objStr); // {a: "aaa", b: "bbb"}
資料型別
underfined、null、0、false、NaN、空字串。他們的邏輯非結果均為true。
閉包格式W
好處:避免命名衝突(全域性變數汙染)。
(function(a, b) {
console.log(a+b); //30
})(10, 20);
擷取和清空陣列
var arr = [12, 222, 44, 88];
arr.length = 2; //擷取,arr = [12, 222];
arr.length = 0; //清空,arr will be equal to [].
獲取陣列的最大最小值
var numbers = [5, 45822, 120, -215]; var maxInNumbers = Math.max.apply(Math, numbers); //45822 var minInNumbers = Math.min.apply(Math, numbers); //-215
浮點數計算問題
0.1 + 0.2 == 0.3 //false
#為什麼呢?因為0.1+0.2等於0.30000000000000004。JavaScript的數字都遵循IEEE 754標準構建,在內部都是64位浮點小數表示。可以通過使用toFixed()來解決這個問題。
滾動滑鼠觸發事件
$(window).scroll(function() { var a = $(window).scrollTop(); if(a > 100) { $('.go-top').fadeIn(); }else { $('.go-top').fadeOut(); } }); $(".go-top").click(function(){ $("html,body").animate({scrollTop:"0px"},'600'); });
阻止冒泡
function stopBubble(e){
e = e || window.event;
if(e.stopPropagation){
e.stopPropagation(); //W3C阻止冒泡方法
}else {
e.cancelBubble = true; //IE阻止冒泡方法
}
}
全部替換
var replaceAll = function(bigStr, str1, str2) { //把bigStr中的所有str1替換為str2
var reg = new RegExp(str1, 'gm');
return bigStr.replace(reg, str2);
}
獲取url的引數值
var getURLParam = function(name) {
return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)', "ig").exec(location.search) || [, ""])[1].replace(/\+/g, '%20')) || null;
};
深度拷貝物件
function cloneObj(obj) {
var o = obj.constructor == Object ? new obj.constructor() : new obj.constructor(obj.valueOf());
for(var key in obj){
if(o[key] != obj[key] ){
if(typeof(obj[key]) == 'object' ){
o[key] = mods.cloneObj(obj[key]);
}else{
o[key] = obj[key];
}
}
}
return o;
}
陣列去重
var unique = function(arr) {
var result = [], json = {};
for (var i = 0, len = arr.length; i < len; i++){
if (!json[arr[i]]) {
json[arr[i]] = 1;
result.push(arr[i]); //返回沒被刪除的元素
}
}
return result;
};
判斷陣列元素是否重複
var isRepeat = function(arr) { //arr是否有重複元素
var hash = {};
for (var i in arr) {
if (hash[arr[i]]) return true;
hash[arr[i]] = true;
}
return false;
};
生成隨機數
function randombetween(min, max){
return min + (Math.random() * (max-min +1));
}
操作cookie
own.setCookie = function(cname, cvalue, exdays){
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = 'expires='+d.toUTCString();
document.cookie = cname + '=' + cvalue + '; ' + expires;
};
own.getCookie = function(cname) {
var name = cname + '=';
var ca = document.cookie.split(';');
for(var i=0; i< ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') c = c.substring(1);
if (c.indexOf(name) != -1) return c.substring(name.length, c.length);
}
return '';
};
讓英文字串超出表格寬度自動換行
word-wrap: break-word; word-break: break-all;
透明背景
<IFRAME src="1.htm" width=300 height=180 allowtransparency></iframe>
獲得style內容
obj.style.cssText
HTML標籤
document.documentElement.innerHTML
第一個style標籤
document.styleSheets[0]
style標籤裡的第一個樣式
document.styleSheets[0].rules[0]
防止點選空連結時,頁面往往重置到頁首端。
<a href="javascript:function()">word</a>
上一網頁源
asp:
request.servervariables("HTTP_REFERER")
javascript:
document.referrer
釋放記憶體
CollectGarbage();
禁止右鍵
document.oncontextmenu = function() { return false;}
禁止儲存
<noscript><iframe src="*.htm"></iframe></noscript>
禁止選取
<body oncontextmenu="return false" ondragstart="return false" onselectstart ="return false" onselect="document.selection.empty()" oncopy="document.selection.empty()" onbeforecopy="return false"onmouseup="document.selection.empty()>
禁止貼上
<input type=text onpaste="return false">
位址列圖示
<link rel="Shortcut Icon" href="favicon.ico">
favicon.ico 名字最好不變16*16的16色,放虛擬目錄根目錄下
收藏欄圖示
<link rel="Bookmark" href="favicon.ico">
檢視原始碼
<input type=button value=檢視網頁原始碼 onclick="window.location = 'view-source:'+ 'http://www.csdn.net/'">
關閉輸入法
<input style="ime-mode:disabled">
自動全選
<input type=text name=text1 value="123" onfocus="this.select()">
ENTER鍵可以讓游標移到下一個輸入框
<input onkeydown="if(event.keyCode==13)event.keyCode=9">
文字框的預設值
<input type=text value="123" onfocus="alert(this.defaultValue)">
獲得時間所代表的微秒
var n1 = new Date("2004-10-10".replace(/-/g, "\/")).getTime()
視窗是否關閉
win.closed
checkbox扁平
<input type=checkbox style="position: absolute; clip:rect(5px 15px 15px 5px)"><br>
獲取選中內容
document.selection.createRange().duplicate().text
自動完成功能
<input type=text autocomplete=on>開啟該功能
<input type=text autocomplete=off>關閉該功能
視窗最大化
<body onload="window.resizeTo(window.screen.width - 4,window.screen.height-50);window.moveTo(-4,-4)">
無關閉按鈕IE
window.open("aa.htm", "meizz", "fullscreen=7");
統一編碼/解碼
alert(decodeURIComponent(encodeURIComponent("http://你好.com?as= hehe")))
encodeURIComponent對":"、"/"、";" 和 "?"也編碼
表格行指示
<tr onmouseover="this.bgColor='#f0f0f0'" onmouseout="this.bgColor='#ffffff'">
各種尺寸
s += "\r\n網頁可見區域寬:"+ document.body.clientWidth;
s += "\r\n網頁可見區域高:"+ document.body.clientHeight;
s += "\r\n網頁可見區域高:"+ document.body.offsetWeight +" (包括邊線的寬)";
s += "\r\n網頁可見區域高:"+ document.body.offsetHeight +" (包括邊線的寬)";
s += "\r\n網頁正文全文寬:"+ document.body.scrollWidth;
s += "\r\n網頁正文全文高:"+ document.body.scrollHeight;
s += "\r\n網頁被捲去的高:"+ document.body.scrollTop;
s += "\r\n網頁被捲去的左:"+ document.body.scrollLeft;
s += "\r\n網頁正文部分上:"+ window.screenTop;
s += "\r\n網頁正文部分左:"+ window.screenLeft;
s += "\r\n螢幕解析度的高:"+ window.screen.height;
s += "\r\n螢幕解析度的寬:"+ window.screen.width;
s += "\r\n螢幕可用工作區高度:"+ window.screen.availHeight;
s += "\r\n螢幕可用工作區寬度:"+ window.screen.availWidth;
UNCODE編碼
escape() ,unescape
事件源物件
event.srcElement.tagName
event.srcElement.type
捕獲釋放
event.srcElement.setCapture();
event.srcElement.releaseCapture();
事件按鍵
event.keyCode
event.shiftKey
event.altKey
event.ctrlKey
事件返回值
event.returnValue