JS非行間樣式獲取函數(shù)的實(shí)例代碼
行間樣式:元素內(nèi)部用style定義的樣式,如:<div style="width:200px;"></div>
非行間樣式:在<style></style>
內(nèi)通過(guò)css定義的樣式
先看一段出問(wèn)題的代碼
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <style> div{ height: 100px; width: 100px; border: 2px solid black; background: red; } </style> <body> <div id="div1" style=""> 寬 </div> </body> <script type="text/javascript" > window.onload =function(){ var oDiv1=document.getElementById('div1'); oDiv1.onclick=function(){ oDiv1.style.width=200+'px'; } } </script> </html>
我在頁(yè)面放了一個(gè)方塊,紅底黑邊,想通過(guò)點(diǎn)擊該方塊讓他的寬度變?yōu)?00px,看一下結(jié)果——沒(méi)有任何反應(yīng),也沒(méi)有報(bào)錯(cuò)。
在事件中添加alert('a');有反應(yīng),說(shuō)明onclick事件被觸發(fā)了,那么就是
oDiv1.style.Width=200+'px';
這行代碼有問(wèn)題。
打印一下這個(gè)這個(gè)變量:
alert(oDiv1.style.Width);
雖然不報(bào)錯(cuò),但是顯示空白,即使用變量賦值之后任然無(wú)法獲取這個(gè)值,真正的原因是style只能獲取行間樣式,試一下:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <style> </style> <body> <div id="div1" style="height: 100px; width: 100px; border: 2px solid black; background: red;"> 寬 </div> </body> <script type="text/javascript" > window.onload =function(){ var oDiv1=document.getElementById('div1'); oDiv1.onclick=function(){ oDiv1.style.width=200+'px'; } } </script> </html>
可以確定確實(shí)是行間樣式與非行間樣式的問(wèn)題,實(shí)際上不可能把所有樣式都寫在行間。
要解決這個(gè)問(wèn)題,需要引入兩個(gè)元素屬性——currentStyle和getComputedStyle(obj, false)
currentStyle——獲取非行間(當(dāng)前樣式)IE瀏覽器專屬,chrome和FF不兼容。
getComputedStyle(obj, false)——獲取非行間(計(jì)算后的樣式)IE不兼容。
<script type="text/javascript" > window.onload =function(){ var oDiv1=document.getElementById('div1'); oDiv1.onclick=function(){ //FF、chrome alert(getComputedStyle(oDiv1, false).width); //IE alert(oDiv1.currentStyle.width); } } </script>
把他封裝一下寫成一個(gè)公用函數(shù):
//obj:哪個(gè)元素 //attr:那個(gè)樣式 function getStyle(obj,attr){ if(obj.currentStyle){ //IE return obj.currentStyel[attr]; }else{ //FF return getComputedStyle(obj, false)[attr]; } }
通過(guò)判斷obj.currentStyle是否為真來(lái)判斷當(dāng)前瀏覽器為IE還是其他。
注意:.width的寫法可以寫成['width']
總結(jié)
以上所述是小編給大家介紹的JS非行間樣式獲取函數(shù)的實(shí)例代碼,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
JavaScript返回網(wǎng)頁(yè)中超鏈接數(shù)量的方法
這篇文章主要介紹了JavaScript返回網(wǎng)頁(yè)中超鏈接數(shù)量的方法,使用javascript中的document.links實(shí)現(xiàn)這一功能,需要的朋友可以參考下2015-04-04微信小程序中this.data與this.setData的區(qū)別詳解
這篇文章主要給大家介紹了關(guān)于微信小程序中this.data與this.setData區(qū)別的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧2018-09-09javascript中的Function.prototye.bind
這篇文章主要介紹了javascript中的Function.prototye.bind的相關(guān)資料,需要的朋友可以參考下2015-06-06JavaScript實(shí)現(xiàn)簡(jiǎn)易的天數(shù)計(jì)算器實(shí)例【附demo源碼下載】
這篇文章主要介紹了JavaScript實(shí)現(xiàn)簡(jiǎn)易的天數(shù)計(jì)算器,結(jié)合實(shí)例形式分析了javascript日期與時(shí)間計(jì)算的相關(guān)技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2017-01-01JavaScript 中的12種循環(huán)遍歷方法【總結(jié)】
本文給大家總結(jié)了12種JavaScript 中的1循環(huán)遍歷方法,每種方法通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-05-05js實(shí)現(xiàn)簡(jiǎn)單手風(fēng)琴效果
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)簡(jiǎn)單手風(fēng)琴效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09