亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > JavaScript > 正文

JS動態創建DOM元素的方法

2024-05-06 16:21:56
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了JS動態創建DOM元素的方法,涉及javascript動態創建DOM元素及DOM元素事件綁定與刪除的相關技巧,需要的朋友可以參考下

本文實例講述了JS動態創建DOM元素的方法。分享給大家供大家參考。具體如下:

近日,因工作需要,需要通過點擊某個元素后, 動態創建一個DOM元素并顯示,因此寫了一些相關的JS函數,在此記錄,以作備忘:

 

 
  1. /* 
  2. 動態創建DOM元素的相關函數支持 
  3. */ 
  4. /* 
  5. 獲取以某個元素的DOM對象 
  6. @obj 該元素的ID字符串 
  7. */ 
  8. function getElement(obj) 
  9. return typeof obj=='string'?document.getElementById(obj):obj; 
  10. /* 
  11. 獲取某個元素的位置 
  12. @obj 該元素的DOM對象,或該元素的ID 
  13. */ 
  14. function getObjectPosition(obj) 
  15. obj=typeof obj==='string'?getElement(obj):obj; 
  16. if(!obj) 
  17. return
  18. }  
  19. var position=''
  20. if(obj.getBoundingClientRect) //For IEs 
  21. position=obj.getBoundingClientRect(); 
  22. return {x:position.left,y:position.top}; 
  23. else if(document.getBoxObjectFor) 
  24. position=document.getBoxObjectFor(obj); 
  25. return {x:position.x,y:position.y}; 
  26. else 
  27. position={x:obj.offsetLeft,y:obj.offsetTop}; 
  28. var parent=obj.offsetParent; 
  29. while(parent) 
  30. position.x+=obj.offsetLeft; 
  31. position.y+=obj.offsetTop; 
  32. parent=obj.offsetParent; 
  33. return position; 
  34. /* 
  35. 為某個DOM對象動態綁定事件 
  36. @oTarget 被綁定事件的DOM對象 
  37. @sEventType 被綁定的事件名,注意,不加on的事件名,如 'click' 
  38. @fnHandler 被綁定的事件處理函數 
  39. */ 
  40. function addEventHandler(oTarget, sEventType, fnHandler) 
  41. if (oTarget.addEventListener)  
  42. oTarget.addEventListener(sEventType, fnHandler, false); 
  43. }  
  44. else if (oTarget.attachEvent) //for IEs 
  45. oTarget.attachEvent("on" + sEventType, fnHandler); 
  46. }  
  47. else 
  48. oTarget["on" + sEventType] = fnHandler; 
  49. /* 
  50. 從某個DOM對象中去除某個事件 
  51. @oTarget 被綁定事件的DOM對象 
  52. @sEventType 被綁定的事件名,注意,不加on的事件名,如 'click' 
  53. @fnHandler 被綁定的事件處理函數 
  54. */ 
  55. function removeEventHandler(oTarget,sEventType,fnHandler) 
  56. if(oTarget.removeEventListener)  
  57. oTarget.removeEventListener(sEventType,fnHandler,false
  58. else if(oTarget.detachEvent) //for IEs 
  59. oTarget.detachEvent(sEventType,fnHandler); 
  60. else 
  61. oTarget['on'+sEventType]=undefined; 
  62. /* 
  63. 創建動態的DOM對象 
  64. @domParams是被創建對象的屬性的JSON表達,它具有如下屬性: 
  65. @parentNode 被創建對象所屬的父級元素(可為元素ID,也可為DOM對象) 
  66. @domId 被創建對象的ID 
  67. @domTag 被創建對象的tag名稱,支持常用的布局元素,如div span等,但不支持input/form等特別的元素  
  68. @content 被創建的對象內容  
  69. @otherAttributes 為被創建的對象添加除函數必需的屬性外其它屬性,如[{attrName:'style.color',attrValue:'red'}] 
  70. @eventRegisters 為被創建的對象添加事件,類似[{eventType:'click',eventHandler:adsfasdf}]的數組 
  71. -經過組合后,該參數具有如下形式: 
  72. {parentNode:document.body,domTag:'div',content:'這是測試的',otherAttributes:[{attrName:'style.color',attrValue:'red'}],eventRegisters:[{eventType:'click',eventHandler:fnHandler}]} 
  73. */ 
  74. function dynCreateDomObject(domParams) 
  75. {  
  76. if(getElement(domParams.domId)) 
  77. childNodeAction('remove',domParams.parentNode,domParams.domId); 
  78. var dynObj=document.createElement(domParams.domTag); 
  79. with(dynObj) 
  80. {  
  81. //id也可以通過otherAttributes傳入,但是出于ID的特殊性,此處仍然采用 
  82. //JSON對象傳入,并以DOM ID屬性附件 
  83. id=domParams.domId; 
  84. innerHTML=domParams.content; 
  85. //innerHTML是DOM屬性,而id等是元素屬性,注意區別 
  86. /*添加屬性*/ 
  87. if(null!=domParams.otherAttributes) 
  88. for(var i=0;i<domParams.otherAttributes.length;i++) 
  89. {  
  90. var otherAttribute =domParams.otherAttributes[i]; 
  91. dynObj.setAttribute(otherAttribute.attrName,otherAttribute.attrValue); 
  92. /*end 添加屬性*/ 
  93. /*添加相關事件*/ 
  94. if(null!=domParams.eventRegisters) 
  95. for(var i=0;i<domParams.eventRegisters.length;i++) 
  96. var eventRegister =domParams.eventRegisters[i];  
  97. addEventHandler(dynObj,eventRegister.eventType,eventRegister.eventHandler); 
  98. /*end 添加相關事件*/ 
  99. try 
  100. {  
  101. childNodeAction('append',domParams.parentNode,dynObj); 
  102. catch($e) 
  103. }  
  104. return dynObj; 
  105. /* 
  106. 從父結點中刪除子結點 
  107. @actionType 默認為append,輸入字符串 append | remove 
  108. @parentNode 父結點的DOM對象,或者父結點的ID 
  109. @childNode 被刪除子結點的DOM對象 或者被刪除子結點的ID 
  110. */ 
  111. function childNodeAction(actionType,parentNode,childNode) 
  112. if(!parentNode) 
  113. {return; } 
  114. parentNode=typeof parentNode==='string'?getElement(parentNode):parentNode; 
  115. childNode=typeof childNode==='string'?getElement(childNode):childNode; 
  116. if(!parentNode || !childNode) 
  117. {return;} 
  118. var action=actionType.toLowerCase(); 
  119. ifnull==actionType || action.length<=0 || action=='append'
  120. action='parentNode.appendChild'
  121. else 
  122. action='parentNode.removeChild'
  123.  
  124. try 
  125. eval(action)(childNode); 
  126. catch($e) 
  127. alert($e.message);  

使用示例:

 

 
  1. var htmlAttributes= 
  2. {attrName:'class',attrValue:'樣式名稱' } //for IEs 
  3. {attrName:'className',attrValue: '樣式名稱'//for ff 
  4. ]  
  5. var domParams={domTag:'div',content:'動態div的innerHTML',otherAttributes:htmlAttributes}; 
  6. var newHtmlDom=dynCreateDomObject(domParams); 
  7. //通過 setAttribute('style','position:absolute.....................') 
  8. //的形式來指定style沒有效果,只能通過如下形式,jiong 
  9. newHtmlDom.style.zIndex='8888'
  10. newHtmlDom.style.position='absolute'
  11. newHtmlDom.style.left='100px'
  12. newHtmlDom.style.top='200px'

希望本文所述對大家的javascript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久久久久久久亚洲| 国产精品免费久久久久影院| 国产精品久久久久久久久久三级| 欧美肥婆姓交大片| 久久视频国产精品免费视频在线| 亚洲乱亚洲乱妇无码| 国产精自产拍久久久久久蜜| 亚洲视频一区二区三区| 久久精品中文字幕电影| 欧美成人精品一区二区三区| 国产在线观看一区二区三区| 欧美性猛交xxxx富婆弯腰| xxx一区二区| 欧美自拍大量在线观看| 九九热视频这里只有精品| 日韩av快播网址| 国产精品电影网| 亚洲精品视频免费在线观看| 色综合久综合久久综合久鬼88| 国产一区二区三区毛片| 国产精品久久久久久久久久久不卡| 最好看的2019的中文字幕视频| 日韩精品极品在线观看| 亚洲免费视频观看| 日韩美女中文字幕| 欧美孕妇性xx| 亚洲最大福利视频| 久久成人综合视频| 国产成人综合久久| 日韩欧美精品免费在线| 国产亚洲激情在线| 亲子乱一区二区三区电影| 夜夜躁日日躁狠狠久久88av| 91视频免费网站| 欧美成人免费网| 国产精品久久在线观看| 久久亚洲春色中文字幕| 国产一区二区三区在线观看视频| 国产成人av在线播放| 国产成人一区三区| 中国日韩欧美久久久久久久久| 欧美高清激情视频| 精品亚洲永久免费精品| 欧美xxxx18性欧美| 久久精品国产99国产精品澳门| 亚洲免费视频在线观看| 亚洲成av人影院在线观看| 欧美成人亚洲成人日韩成人| 中文字幕不卡在线视频极品| 亚洲三级黄色在线观看| 亚洲视频在线免费看| 亚洲第一色中文字幕| 奇门遁甲1982国语版免费观看高清| 亚洲午夜av久久乱码| 国产精品第100页| 国产精品久久久久久久久久免费| 久久久久久久电影一区| 亚洲国产精品一区二区三区| 色婷婷综合久久久久中文字幕1| 97超级碰碰人国产在线观看| 久久手机免费视频| 欧美国产第二页| 欧美日韩亚洲高清| 亚洲国产精品电影在线观看| 岛国av一区二区三区| 亚洲变态欧美另类捆绑| 亚洲国产欧美日韩精品| 亚洲最大av网| 国产精品美女主播在线观看纯欲| 中文字幕日韩综合av| 精品国产区一区二区三区在线观看| 久久精品国产亚洲| 欧美成人精品激情在线观看| 国产精品入口夜色视频大尺度| 日韩视频免费看| 国产成人精品久久亚洲高清不卡| 亚洲最大在线视频| 伊是香蕉大人久久| 日本久久91av| 国产日韩在线播放| 欧美乱妇40p| 日韩av免费在线看| 色哟哟网站入口亚洲精品| 欧美激情精品在线| 26uuu日韩精品一区二区| 欧美性猛交xxxx乱大交3| 亚洲精品国产精品久久清纯直播| 91丝袜美腿美女视频网站| 久久高清视频免费| 久久精品美女视频网站| www.亚洲一区| 亚洲精品久久久久久下一站| 国产91色在线|免| 久久久爽爽爽美女图片| 91香蕉嫩草神马影院在线观看| 欧美电影在线免费观看网站| 久久成人18免费网站| 久久精品视频在线播放| 日本久久精品视频| 一区二区三区久久精品| 中日韩午夜理伦电影免费| 日本中文字幕久久看| 亚洲xxxxx电影| 福利一区视频在线观看| 亚洲国产一区二区三区四区| 成人激情av在线| 日韩专区在线播放| 欧洲中文字幕国产精品| 精品久久久久久久久久国产| 欧美成人高清视频| 欧美午夜女人视频在线| 日韩中文字幕网| 亚洲国产97在线精品一区| 亚洲伊人一本大道中文字幕| 日韩美女免费线视频| 久久精视频免费在线久久完整在线看| 亚洲色图激情小说| 国产亚洲欧美日韩精品| 国产精品亚洲激情| 超碰97人人做人人爱少妇| 国产精品国内视频| 日韩毛片中文字幕| 亚洲日本成人女熟在线观看| 川上优av一区二区线观看| 国产97在线|亚洲| 欧美小视频在线观看| 亚洲欧美在线看| 日韩视频永久免费观看| 日本精品中文字幕| 亚洲精品久久视频| 欧美精品一区在线播放| 欧美日韩ab片| 久久国产精品偷| 欧美激情一级二级| 久久亚洲综合国产精品99麻豆精品福利| 51久久精品夜色国产麻豆| 激情久久av一区av二区av三区| 国产精品18久久久久久首页狼| 韩国视频理论视频久久| www亚洲精品| 欧美第一页在线| 日韩视频永久免费观看| 欧美激情亚洲视频| 国产精品久久久久av| 亚洲精品视频久久| 欧美一区二区三区免费观看| 国产欧美一区二区三区视频| 久久人人爽人人爽人人片av高清| 国产美女主播一区| 欧美激情第一页xxx| 91欧美日韩一区| 国产精品一香蕉国产线看观看| 欧美美女操人视频| 国产精品久久久久久久av大片| 国产伦精品一区二区三区精品视频| 成人日韩在线电影| 色噜噜狠狠狠综合曰曰曰| 久久综合免费视频| 奇米一区二区三区四区久久| 日本韩国在线不卡| 久久久伊人欧美| 久久综合色影院| 97av在线播放| 2019中文字幕免费视频|