js 中的奇葩問題 1、eg:000101 = 65; 000101為獲取到的字元串類型,通過click事件傳遞,000101變為了65; 解決方法:jq中直接運行的代碼中獲取到的000101為字元串類型,但是後邊人為運行此代碼相關的代碼時獲取到的000101就為number類型。由此可見在JS中數 ...
1 //s金額 n保留幾位小數 預設保留兩位小數 2 function formatMoney(s, n) { 3 n = n > 0 && n <= 20 ? n : 2; 4 s = parseFloat((s + "").replace(/[^\d\.-]/g, "")).toFixed(n) + ""; 5 var l = s.split(".")[0].split("").reverse(), r = s.split(".")[1]; 6 t = ""; 7 for (i = 0; i < l.length; i++) { 8 t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : ""); 9 } 10 return t.split("").reverse().join("") + "." + r; 11 }
1 //小數點往後移動兩位[實際上是*100,但是例如:1.0011*100在JS中結果不對。] 2 function numberChange(i){ 3 if(i==0){ 4 return 0; 5 } 6 var str = i.toString(),len = 0,arr=[],newStr=''; 7 for(var i = 0;i<str.length;i++){ 8 if(str[i]=='.'){ 9 len = i; 10 } 11 arr.push(str[i]) 12 } 13 arr[len] = arr[len+1]; 14 arr[len+1] = arr[len+2]; 15 arr[len+2] = '.'; 16 for(var i = 0;i<arr.length;i++){ 17 newStr+=arr[i]; 18 } 19 return Number(newStr); 20 }
1 //1。獲得屏幕的解析度: 2 screen.width 3 screen.height 4 5 //2。獲得視窗大小: 6 document.body.clientWidth 7 document.body.clientHeight 8 9 //3。獲得視窗大小(包含Border、Scroll等元素) 10 document.body.offsetWidth 11 document.body.offsetHeight 12 13 14 15 document.documentElement.clientHeight //獲取當前瀏覽器視窗可工作高度
1 //滑鼠相對於網頁的坐標 2 function mousePos(e){ 3 var x,y; 4 var e = e||window.event; 5 return { 6 x:e.clientX+document.body.scrollLeft+document.documentElement.scrollLeft, 7 y:e.clientY+document.body.scrollTop+document.documentElement.scrollTop 8 }; 9 }; 10 ~function (e){ 11 var e = e||window.event; 12 alert(‘X:'+mousePos(e).x+’|||Y:'+mousePos(e).y); 13 }()js 中的奇葩問題 1、eg:000101 = 65; 000101為獲取到的字元串類型,通過click事件傳遞,000101變為了65; 解決方法:jq中直接運行的代碼中獲取到的000101為字元串類型,但是後邊人為運行此代碼相關的代碼時獲取到的000101就為number類型。由此可見在JS中數字前面加0代表此數字為八進位。可以將000101作為屬性傳遞,或者將000101通過代碼直接執行時獲取到的是字元串的機制來經行判斷轉換然後再傳遞,從而在事件中再去獲取判斷。\ 2、執行函數以及引用函數同時出現; eg:fun(successCallBack(data),failCallBack);successCallBack和failCallBack都是函數,調用fun函數返回成功時,必然走成功,沒有問題,但是返回失敗時,必走成功,失敗同時也會掉,2個同時執行,所以調用un函數時success 和 fail 應該都為執行函數或者引用函數,這樣就不會出現返回失敗走成功回調的情況。