1 ? ? var s = null;
? ? ?alert(typeof(s)) ? ? ? // object
2 ?jquery中? ? attr? 和 prop? 的區(qū)別
? attr設置的屬性主要體現(xiàn)在頁面上,prop設置的屬性主要體現(xiàn)在內(nèi)存上
? 對于HTML元素本身就帶有的固有屬性,在處理時,使用prop方法。
?對于HTML元素我們自己自定義的DOM屬性,在處理時,使用attr方法。
< a >百度
? ? ? 這個例子里元素的DOM屬性有“href、target和class",這些屬性就是元素本身就帶有的屬性,也是W3C標準里就包含有這幾個屬性,或者說在IDE里能夠智能提示出的屬性,這些就叫做固有屬性。處理這些屬性時,建議使用prop方法。
? ? ? 這個例子里元素的DOM屬性有“href、id和action”,很明顯,前兩個是固有屬性,而后面一個“action”屬性是我們自己自定義上去的,元素本身是沒有這個屬性的。這種就是自定義的DOM屬性。處理這些屬性時,建議使用attr方法。使用prop方法取值和設置屬性值時,都會返回undefined值。
< inputid="chk1"type="checkbox"/>是否可見
< inputid="chk2"type="checkbox"checked="checked"/>是否可見
像checkbox,radio和select這樣的元素,選中屬性對應“checked”和“selected”,這些也屬于固有屬性,因此需要使用prop方法去操作才能獲得正確的結果。
$("#chk1").prop("checked") ==false$("#chk2").prop("checked") ==true
如果上面使用attr方法,則會出現(xiàn):
$("#chk1").attr("checked") ==undefined
$("#chk2").attr("checked") == "checked"
3 ? ?null == undefine ? // ?true
? ? ? null === undefine? // false
4 ? ? 標題標簽不能繼承文字大小
5? ? ? 閉包問題
? var elem =document.getElementsByTagName('div');// 如果頁面上有5個div
for( ?var i =0; i < elem.length; i++) {? ??
? ? ? ? ? ? ? ? elem[i].onclick =function () {? ? ??
? ? ? ? ? ? ? ? ? ? ?alert(i);// 總是5
? ? ? ? ? ? ? ? ? };
}
上方是一個很常見閉包問題,點擊任何div彈出的值總是5,因為當你觸發(fā)點擊事件的時候i的值早已是5,可以用下面方式解決:
var elem =document.getElementsByTagName('div');// 如果頁面上有5個div
for(var i =0; i < elem.length; i++) {?
?? (function (w) {? ? ? ? elem[w].onclick =function () {? ? ? ? ? ?
? ? ? ? ? ? ? ? ?alert(w);// 依次為0,1,2,3,4
? ? ? ? ? };
? ? ? })(i);
}
在綁定點擊事件外部封裝一個立即執(zhí)行函數(shù),并將i傳入該函數(shù)即可。
6 ??
標簽的defer="defer"屬性 ?defer 屬性規(guī)定是否對腳本執(zhí)行進行延遲,直到頁面加載為止。標簽的defer="defer"屬性 ?defer 屬性規(guī)定是否對腳本執(zhí)行進行延遲,直到頁面加載為止。標簽的defer="defer"屬性 ?defer 屬性規(guī)定是否對腳本執(zhí)行進行延遲,直到頁面加載為止。
? ? ??