
function justAtest()
{
var test= document.getElementById("test");
var test2=document.getElementById("test2")
var test3=document.getElementById("test3")
var test4=document.getElementById("test4");
alert(test4.style.height);
alert(test3.style.height);
alert(test2.style.height)
alert(test.style.height);
alert(document.body.style.height)
}
height :其實(shí)Height高度跟其他的高度有點(diǎn)不一樣,在javascript中它是屬于對象的style對象屬性中的一個(gè)成員,它的值是一個(gè)字符類型的,而另外三個(gè)高度的值是int類型的,它們是對象的屬性.因此這樣document.body.height就會(huì)提示undenifine,而必須寫成document.body.style.height?
上面的腳本將依次彈出700px,550px,600px,500px,1000px.height是最簡單的了,不必去考慮是否有滾動(dòng)條及邊框等.因此也不做多解釋了.然后我們將腳本換下
function justAtest()
{
var test= document.getElementById("test");
var test2=document.getElementById("test2")
var test3=document.getElementById("test3")
var test4=document.getElementById("test4");
alert(test4.clientHeight);
alert(test3.clientHeight);
alert(test2.clientHeight)
alert(test.clientHeight);
alert(document.body.clientHeight)
}
運(yùn)行后火狐的結(jié)果為:700,550,583,483,1000
IE的結(jié)果為:700 ,550,583,483,1000
IE與火狐下的運(yùn)行結(jié)果是一致的.下面來看下clientHeight的定義.
clientHeight:可見區(qū)域的寬度,不包括boder的寬度,如果區(qū)域內(nèi)帶有滾動(dòng)條,還應(yīng)該減去橫向滾動(dòng)條不可用的高度,正常的是17px,其實(shí)就是滾動(dòng)條的可滾動(dòng)的部分了,其實(shí)clientHeight與height的高度差不多,如果不帶滾動(dòng)條的話他們的值都是一樣的,如果帶有滾動(dòng)條的話就會(huì)比height值少17px;火狐與IE下均為一致.
接著我們來看scrollHeight
function justAtest()
{
var test= document.getElementById("test");
var test2=document.getElementById("test2")
var test3=document.getElementById("test3")
var test4=document.getElementById("test4");
alert(test4.scrollHeight);
alert(test3.scrollHeight);
alert(test2.scrollHeight)
alert(test.scrollHeight);
alert(document.body.scrollHeight)
}
運(yùn)行后火狐的結(jié)果為:700,552,700,602,1002
IE的結(jié)果為: 15, 15 , 700,602, 552
scrollHeight:這個(gè)屬性就比較麻煩了,因?yàn)樗鼈冊诨鸷鶬E下簡直差太多了..
在火狐下還很好理解,它其實(shí)就是滾動(dòng)條可滾動(dòng)的部分還要加上boder的高度還要加上橫向滾動(dòng)條不可用的高度,與clientHeight比起來,多個(gè)border的高度跟橫向滾動(dòng)條不可用的高度.
在IE中 scrollHeight確是指這個(gè)對象它所包含的對象的高度加上boder的高度和marging,如果它里面沒有包含對象或者這個(gè)對象的高度值未設(shè)置,那么它的值將為15
最后我們來看offsetHeight
function justAtest()
{
var test= document.getElementById("test");
var test2=document.getElementById("test2")
var test3=document.getElementById("test3")
var test4=document.getElementById("test4");
alert(test4.offsetHeight);
alert(test3.offsetHeight);
alert(test2.offsetHeight)
alert(test.offsetHeight);
alert(document.body.offsetHeight)
}
offsetHeight:
FF:700,552,602,502,1002
IE:700,552,602,502,1002
這個(gè)屬性好辦,因?yàn)樵跍y試中IE跟火狐的結(jié)果是一樣的,均表示是自身的高度,如果有設(shè)置boder的話還應(yīng)該加上boder的值,因?yàn)槌藅est4這個(gè)div外,其他的div均有設(shè)置border=1px,所以552=550+2,其他的均一樣.
綜上所述,clientHeight與height的區(qū)別是如果有滾動(dòng)條時(shí)應(yīng)減去滾動(dòng)條的17px不可用部分,offsetHeight與Height的區(qū)別是增加了boder的高度,ScrollHeihgt與Height的區(qū)別是火狐下與offsetHeight一致,IE下如上所述.
相信你現(xiàn)在對這個(gè),width,clientWidth,scrollWidth,offsetWidth已經(jīng)不陌生了,只不過一個(gè)是長一個(gè)是寬的問題了.