檢視js方法的相容性
**:
一、關於data-***
1)命名不要包含大寫字母
第一種:(可行)
第二種:(不可行),data-***中不要包含大寫字母
2)會變動的data-***,data(name)不能改變頁面上顯示的值,請使用attr('data-***')進行改變。需要注意的是,如果獲取的值是數字,attr('data-***')獲取的值是string型別,data(name)獲取的值是number型別。
改變
二、json.parse()
使用此方法將字串轉為json物件時,必須保證字串嚴格符合json格式('',不能通過a沒有加雙引號)
三、陣列與類陣列
如使用document.getelementsbyclassname獲取的元素陣列,是乙個類陣列。
1)類陣列沒有陣列的方法。
2)不要使用for in去遍歷類陣列,會遍歷出多餘的資料。
四、在for中繫結事件
這樣會導致每個按鈕的輸出值都為3,因為它使用了for中的i,i在迴圈後的值就是3,可以使用閉包解決此問題。
var btn = document.getelementsbyclassname('test')
for(var i = 0; i < 3; i++)
}
五、獲取元素樣式
1)style:讀取的只是元素的內聯樣式,即寫在元素的 style 屬性上的樣式,既支援讀也支援寫。
2)getcomputedstyle和currentstyle:讀取的樣式是最終樣式,包括了內聯樣式、嵌入樣式和外部樣式,僅支援讀並不支援寫入。
function getstyle(ele, sty) else
return style;
}
六、js進行浮點數運算存在精度問題
1)使用math.js外掛程式。
2)使用以下**解決。參考位址找不到了....
/**
* js浮點數精確計算,正負計算數值小於
* math.abs(math.pow(2, 53))2的53次方,還不是很了解,粗略說明
* accadd(num1, num2)--加
* accsub(num1, num2)--減
* accdiv(num1, num2)--除
* accmul(num1, num2)--乘
*/(function(window)
exactcalc.prototype = ,
accadd: function(num1, num2) catch (e)
try catch (e)
times = math.pow(10, math.max(dec1, dec2));
// var result = (num1 * times + num2 * times) / times;
var result = (this.accmul(num1, times) + this.accmul(num2, times)) / times;
return this.getcorrectresult("add", num1, num2, result);
// return result;
},accsub: function(num1, num2) catch (e)
try catch (e)
times = math.pow(10, math.max(dec1, dec2));
// var result = number(((num1 * times - num2 * times) / times);
var result = number((this.accmul(num1, times) - this.accmul(num2, times)) / times);
return this.getcorrectresult("sub", num1, num2, result);
// return result;
},accdiv: function(num1, num2) catch (e) {}
try catch (e) {}
dec1 = this.converttoint(num1);
dec2 = this.converttoint(num2);
var result = this.accmul((dec1 / dec2), math.pow(10, t2 - t1));
return this.getcorrectresult("div", num1, num2, result);
// return result;
},accmul: function(num1, num2) catch (e) {}
try catch (e) {}
var result = this.converttoint(s1) * this.converttoint(s2) / math.pow(10, times);
return this.getcorrectresult("mul", num1, num2, result);
// return result;
},countdecimals: function(num)
}var x = str.split('e');
if (isdecimal)
len -= parseint(x[1]);
} else if (str.split('.').length === 2)
}} catch (e) finally
return len;}},
converttoint: function(num) else
return newnum;
},getcorrectresult: function(type, num1, num2, result)
if (math.abs(result - temp_result) > 1)
return result;
} },
exactcalc.prototype.init.prototype = exactcalc.prototype;
window.exactcalc = exactcalc;
})(window);
七、關聯陣列
1)關聯陣列的長度為0.
2)關聯陣列的下標如果是數字,那麼他的長度是根據下標取值的。
var a = ;
a['99'] = 123
console.log(a) // [emptyx99, 123], a.length = 100
八、使用formdata上傳檔案
$("#uploadfile").click(function ()
})})本例子中name="excelfile"一定要有,主要是根據後台的需求上傳
盤點html學習中的各種疑問
1 iframe是內聯元素 2 如果沒有display block 它的高度會比父元素多出4px todo 理解為什麼 底下會有間隙,需要用font size 0或者display block轉為塊級元素,消除底部的間隙。區別在於兩種按鈕預設的 white space 值不一樣,前者是 pre,後者...
CSS實戰中的各種疑問
1.一 問題描述 父div中裡面的內容 如div 浮動之後,父div的高度不能自適應了 二 給父div加上overflow hidden 即可解決 三 網上其他解決方法 未測試,但原理差不多 給父div加上 overflow auto zoom 1 overflow auto 是讓高度自適應,zoo...
JS學習中遇到的問題
1.js給input text文字框 第一種賦值不能及時在文字框展示出來,但是f12除錯可以看到,value已經賦值。第二種沒問題。現在不知道什麼原因。這樣不行 var html n n n 正在為您自動跳轉,也可以手動返回 n n 5秒後自動跳轉.n 返回 n n n n n dialog buy...