您好,登錄后才能下訂單哦!
這篇文章給大家介紹使用JavaScript非行間樣式怎么獲取函數,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
行間樣式:元素內部用style定義的樣式,如:<div ></div>
非行間樣式:在<style></style>
內通過css定義的樣式
<!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" > 寬 </div> </body> <script type="text/javascript" > window.onload =function(){ var oDiv1=document.getElementById('div1'); oDiv1.onclick=function(){ oDiv1.style.width=200+'px'; } } </script> </html>
我在頁面放了一個方塊,紅底黑邊,想通過點擊該方塊讓他的寬度變為200px,看一下結果——沒有任何反應,也沒有報錯。
在事件中添加alert('a');有反應,說明onclick事件被觸發了,那么就是
oDiv1.style.Width=200+'px';
這行代碼有問題。
打印一下這個這個變量:
alert(oDiv1.style.Width);
雖然不報錯,但是顯示空白,即使用變量賦值之后任然無法獲取這個值,真正的原因是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>
可以確定確實是行間樣式與非行間樣式的問題,實際上不可能把所有樣式都寫在行間。
要解決這個問題,需要引入兩個元素屬性——currentStyle和getComputedStyle(obj, false)
currentStyle——獲取非行間(當前樣式)IE瀏覽器專屬,chrome和FF不兼容。
getComputedStyle(obj, false)——獲取非行間(計算后的樣式)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>
把他封裝一下寫成一個公用函數:
//obj:哪個元素 //attr:那個樣式 function getStyle(obj,attr){ if(obj.currentStyle){ //IE return obj.currentStyel[attr]; }else{ //FF return getComputedStyle(obj, false)[attr]; } }
通過判斷obj.currentStyle是否為真來判斷當前瀏覽器為IE還是其他。
注意:.width的寫法可以寫成['width']
關于使用JavaScript非行間樣式怎么獲取函數就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。