国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

javascript中setAttribute()函數(shù)使用方法及兼容性

2024-05-06 16:23:28
字體:
供稿:網(wǎng)友

這篇文章主要介紹了javascript中setAttribute()函數(shù)使用方法及兼容性的相關(guān)資料,需要的朋友可以參考下

setAttribute()函數(shù)可以設(shè)置對象的屬性,如果不存在此屬性,則會創(chuàng)建此屬性。

語法結(jié)構(gòu):

el.setAttribute(name,value)

參數(shù)列表:

參數(shù)描述

name必需。規(guī)定要設(shè)置的屬性名。

value必需。規(guī)定要設(shè)置的屬性值。

代碼實(shí)例:

 

 
  1. <!DOCTYPE html> 
  2. <html> 
  3. <head> 
  4. <meta charset=" utf-8">  
  5. <script type="text/javascript">  
  6. window.onload=function(){  
  7. var mydiv=document.getElementById("mydiv");  
  8. mydiv.setAttribute("id","newid");  
  9. alert(mydiv.getAttribute("id"));  
  10. }  
  11. </script>  
  12. </head>  
  13. <body>  
  14. <div id="mydiv"></div>  
  15. </body>  
  16. </html> 

以上代碼可以重新設(shè)置div的id屬性值,并且彈出新設(shè)置的id屬性值。

實(shí)例二:

 

 
  1. <!DOCTYPE html> 
  2. <html> 
  3. <head> 
  4. <meta charset=" utf-8"
  5. <script type="text/javascript">  
  6. window.onload=function(){  
  7. var mydiv=document.getElementById("mydiv");  
  8. mydiv.setAttribute("newAttr","attrValue");  
  9. alert(mydiv.getAttribute("newAttr"));  
  10. }  
  11. </script>  
  12. </head>  
  13. <body>  
  14. <div id="mydiv"></div>  
  15. </body>  
  16. </html> 

以上代碼可以設(shè)置div的newAttr屬性值,并且彈出此屬性值。這里需要特別注意的是,因?yàn)閐iv默認(rèn)并不具有newAttr屬性,這個時候setAttribute()函數(shù)會首先創(chuàng)建此屬性,然后再給它賦值。

以上兩個代碼實(shí)例在各主流瀏覽器中都能夠成功的執(zhí)行,但這并不說明setAttribute()函數(shù)能夠兼容各個瀏覽器。

再看一段代碼實(shí)例:

 

 
  1. <!DOCTYPE html> 
  2. <html> 
  3. <head> 
  4. <meta charset=" utf-8"
  5. <style type="text/css">  
  6. .textcolor{  
  7. font-size:18px;  
  8. color:red;  
  9. }  
  10. </style>  
  11. <script type="text/javascript">  
  12. window.onload=function(){  
  13. var mydiv=document.getElementById("mydiv");  
  14. mydiv.setAttribute("class","textcolor");  
  15. }  
  16. </script>  
  17. </head>  
  18. <body>  
  19. <div id="mydiv"></div>  
  20. </body>  
  21. </html> 

以上代碼,在標(biāo)準(zhǔn)瀏覽器中能夠?qū)⒆煮w大小設(shè)置為18px,字體顏色設(shè)置為紅色,但是在IE6和IE7瀏覽器中卻不能夠生效。

不過依然可以使用mydiv.getAttribute("class")獲取屬性值"textcolor"。

也就是說在IE6或者IE7瀏覽器中,setAttribute()函數(shù)可以使用,但是并不是對所有的屬性都有效。

下面就列舉一下存在上述問題的屬性:

1.class

2.for

3.cellspacing

4.cellpadding

5.tabindex

6.readonly

7.maxlength

8.rowspan

9.colspan

10.usemap

11.frameborder

12.contenteditable

13.style

為了解決上述問題就要寫一個通用的跨瀏覽器的設(shè)置元素屬性的接口方法:

 

 
  1. dom=(function(){ 
  2. var fixAttr={ 
  3. tabindex:'tabIndex'
  4. readonly:'readOnly'
  5. 'for':'htmlFor'
  6. 'class':'className'
  7. maxlength:'maxLength'
  8. cellspacing:'cellSpacing'
  9. cellpadding:'cellPadding'
  10. rowspan:'rowSpan'
  11. colspan:'colSpan'
  12. usemap:'useMap'
  13. frameborder:'frameBorder'
  14. contenteditable:'contentEditable' 
  15. }, 
  16.  
  17. div=document.createElement('div'); 
  18. div.setAttribute('class','t'); 
  19.  
  20. var supportSetAttr = div.className === 't'
  21.  
  22. return { 
  23. setAttr:function(el, name, val){ 
  24. el.setAttribute(supportSetAttr ? name : (fixAttr[name] || name), val); 
  25. }, 
  26. getAttr:function(el, name){ 
  27. return el.getAttribute(supportSetAttr ? name : (fixAttr[name] || name)); 
  28. })(); 

首先,標(biāo)準(zhǔn)瀏覽器直接使用原始屬性名;其次,IE6/7非以上列舉的屬性仍然用原始屬性名;最后這些特殊屬性使用fixAttr,例如class。

那么上面的代碼實(shí)例修改為以下形式即可:

 

 
  1. <!DOCTYPE html> 
  2. <html> 
  3. <head> 
  4. <meta charset=" utf-8">  
  5. <style type="text/css">  
  6. .textcolor{  
  7. font-size:18px;  
  8. color:red;  
  9. }  
  10. </style>  
  11. <script type="text/javascript">  
  12. dom=(function(){  
  13. var fixAttr={  
  14. tabindex:'tabIndex',  
  15. readonly:'readOnly',  
  16. 'for':'htmlFor',  
  17. 'class':'className',  
  18. maxlength:'maxLength',  
  19. cellspacing:'cellSpacing',  
  20. cellpadding:'cellPadding',  
  21. rowspan:'rowSpan',  
  22. colspan:'colSpan',  
  23. usemap:'useMap',  
  24. frameborder:'frameBorder',  
  25. contenteditable:'contentEditable' 
  26. },  
  27.  
  28. div=document.createElement('div');  
  29. div.setAttribute('class','t');  
  30.  
  31. var supportSetAttr = div.className === 't';  
  32.  
  33. return {  
  34. setAttr:function(el, name, val){  
  35. el.setAttribute(supportSetAttr ? name : (fixAttr[name] || name), val);  
  36. },  
  37. getAttr:function(el, name){  
  38. return el.getAttribute(supportSetAttr ? name : (fixAttr[name] || name));  
  39. }  
  40. }  
  41. })();  
  42. window.onload=function(){  
  43. var mydiv=document.getElementById("mydiv");  
  44. dom.setAttr(mydiv, 'class''textcolor');  
  45. }  
  46. </script>  
  47. </head>  
  48. <body>  
  49. </body>  
  50. </html> 

以上代碼可以在各主流瀏覽器中都有效,都可以將字體大小設(shè)置為18px,顏色設(shè)置為紅色。

至于style屬性可以使用el.style.color="xxx"這種形式進(jìn)行兼容。

以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 南充市| 尉犁县| 新龙县| 诸城市| 刚察县| 台北市| 贵南县| 乌兰浩特市| 巴里| 江西省| 井研县| 毕节市| 通江县| 旺苍县| 基隆市| 临高县| 五指山市| 靖安县| 思南县| 新乡县| 沭阳县| 西盟| 西畴县| 逊克县| 元氏县| 乌兰浩特市| 米易县| 出国| 漳平市| 武宣县| 班玛县| 西宁市| 吉木乃县| 金湖县| 万安县| 奉贤区| 高阳县| 海宁市| 南澳县| 大渡口区| 尼玛县|