web開發學習總結之原生js零散知識點

1 IIFE

IIFE就是immediately-invoked function expression,即時調用函數表達式

如果一個函數,在定義的時候,我們就想直接調用它,就是一個IIFE。
我們試圖在定義函數的後面,直接寫圓括號:

/* 直接在後面寫()會報錯 */
function fun(){
	alert("哈哈")
}();

控制檯報錯,這是因爲函數是一個函數體,並不是表達式,只有表達式能夠用()來執行。
所以就要把function fun(){}“降級”, 從函數體降級爲表達式。方法有很多:

+function fun(){
	alert("哈哈")
}();
-function fun(){
	alert("哈哈")
}();

但這樣寫有點特立獨行,標準的IIFE寫法如下,括號把函數定義給括起來然後再調用。

(function(){
	alert("哈哈");
})();

IIFE裏面的函數,都是匿名函數。

2 DOM

2.1 獲取元素

/* 下面兩個全線兼容 */
document.getElementById();				// 通過id得到元素
document.getElementsByTagName();		// 通過標籤名得到元素們

/* 這兩個不是全線兼容的 */
document.getElementsByClassName();	通過類名得到元素
document.querySelector();			通過選擇器得到元素

2.2 innerHTML

ele.innerHTML屬性就是HTML標籤內部的文本。可以讀,可以設。

2.3 獲取樣式

2.3.1 行內樣式

行內樣式(就是直接在標籤上設置style=""這種)的獲取直接用.style,用.style設置屬性的時候用駝峯命名法。如下面的backgroundColor,fontSize。
對應的css是background-color,font-size。

var oP = document.getElementById("pp");
oP.style.backgroundColor = "skyblue";
oP.style.fontSize = "100px";

2.3.2 計算後樣式

.style只能獲取行內樣式,那如何獲取內聯樣式(style標籤對中的樣式)或外聯樣式(link引入的樣式)呢?使用js中的計算後樣式。

高級瀏覽器:
window.getComputedStyle(oDiv).getPropertyValue("padding-left");
getComputedStyle(oDiv).getPropertyValue("padding-left");
getComputedStyle(oDiv)["padding-left"];	//注意 寫的是padding-left
	
IE678:
oDiv.currentStyle.paddingLeft;
oDiv.currentStyle["paddingLeft"]; //注意 寫的是paddingLeft
/*  */

注意: 當盒子沒有設置高度時,高度完全是靠文字撐的,用currentStyle.height獲得的值是auto字符串,不是對應的像素值。(ps: 這中情況可使用2.4.2的offsetHeight獲得)

2.4 位置和尺寸

2.4.1 offsetLeft和offsetTop

都是數值。

一個元素的offsetLeft值,就是這個元素左邊框外,到自己的offsetParent對象的左邊框內的距離。

那麼誰是自己的offsetParent呢?不同瀏覽器有差異,如圖。

IE6、7 IE8 IE9、IE9+、高級瀏覽器
offsetParent 如果自己沒有定位,那麼就是自己父親中有width或者有height或者有定位的元素。如果自己有定位,那麼就是和高級瀏覽器一致。 和高級瀏覽器一致 自己祖先元素中,離自己最近的已經定位的元素
offsetLeft 和高級瀏覽器一致 多算一條border 自己的border外到offsetParet對象的border內

最好的使用方式:
自定位,父無邊 (父親也要定位,但是爲了順口,就不多說了)
這樣使用,所有瀏覽器的值都是一樣的。

2.4.2 offsetWidth和offsetHeight

全線兼容。都是數值。
一個盒子的offsetWidth值就是自己的 width+左右padding+左右border的寬度。
offsetWidth
特別注意,IE6、7、8下,盒子沒有高度,文字撐的,用currentStyle.height是auto,體現出了offsetHeight的好用。

2.4.3 clientWidth和clientHeight

都是數值。
clientWidth就是自己的width+padding的值。 也就是說,比offsetWidth少了border。
clientWidth

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章