天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

通過JS動態創建一個html DOM元素并顯示

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

/**//* 動態創建DOM元素的相關函數支持 www.jcodecraeer.com */ /**//* 獲取以某個元素的DOM對象 @obj 該元素的ID字符串 */ function getElement(obj) { return typeof obj=='string'?document.getElementById(obj):obj; } /**//* 獲取某個元素的位置 @obj 該元素的DOM對象,或該元素的ID */ function getObjectPosition(obj) { obj=typeof obj==='string'?getElement(obj):obj; if(!obj) { return; } var position=''; if(obj.getBoundingClientRect) //For IEs { position=obj.getBoundingClientRect(); return {x:position.left,y:position.top}; } else if(document.getBoxObjectFor) { position=document.getBoxObjectFor(obj); return {x:position.x,y:position.y}; } else { position={x:obj.offsetLeft,y:obj.offsetTop}; var parent=obj.offsetParent; while(parent) { position.x+=obj.offsetLeft; position.y+=obj.offsetTop; parent=obj.offsetParent; } return position; } } /**//* 為某個DOM對象動態綁定事件 @oTarget 被綁定事件的DOM對象 @sEventType 被綁定的事件名,注意,不加on的事件名,如 'click' @fnHandler 被綁定的事件處理函數 */ function addEventHandler(oTarget, sEventType, fnHandler) { if (oTarget.addEventListener) { oTarget.addEventListener(sEventType, fnHandler, false); } else if (oTarget.attachEvent) //for IEs { oTarget.attachEvent("on" + sEventType, fnHandler); } else { oTarget["on" + sEventType] = fnHandler; } } /**//* 從某個DOM對象中去除某個事件 @oTarget 被綁定事件的DOM對象 @sEventType 被綁定的事件名,注意,不加on的事件名,如 'click' @fnHandler 被綁定的事件處理函數 */ function removeEventHandler(oTarget,sEventType,fnHandler) { if(oTarget.removeEventListener) { oTarget.removeEventListener(sEventType,fnHandler,false) } else if(oTarget.detachEvent) //for IEs { oTarget.detachEvent(sEventType,fnHandler); } else { oTarget['on'+sEventType]=undefined; } } /**//* 創建動態的DOM對象 @domParams是被創建對象的屬性的JSON表達,它具有如下屬性: @parentNode 被創建對象所屬的父級元素(可為元素ID,也可為DOM對象) @domId 被創建對象的ID @domTag 被創建對象的tag名稱,支持常用的布局元素,如div span等,但不支持input/form等特別的元素 @content 被創建的對象內容 @otherAttributes 為被創建的對象添加除函數必需的屬性外其它屬性,如[{attrName:'style.color',attrValue:'red'}] @eventRegisters 為被創建的對象添加事件,類似[{eventType:'click',eventHandler:adsfasdf}]的數組 -經過組合后,該參數具有如下形式: {parentNode:document.body,domTag:'div',content:'這是測試的',otherAttributes:[{attrName:'style.color',attrValue:'red'}],eventRegisters:[{eventType:'click',eventHandler:fnHandler}]} */ function dynCreateDomObject(domParams) { if(getElement(domParams.domId)) { childNodeAction('remove',domParams.parentNode,domParams.domId); } var dynObj=document.createElement(domParams.domTag); with(dynObj) { //id也可以通過otherAttributes傳入,但是出于ID的特殊性,此處仍然采用 //JSON對象傳入,并以DOM ID屬性附件 id=domParams.domId; innerHTML=domParams.content; //innerHTML是DOM屬性,而id等是元素屬性,注意區別 } /**//*添加屬性*/ if(null!=domParams.otherAttributes) { for(var i=0;i<domParams.otherAttributes.length;i++) { var otherAttribute =domParams.otherAttributes[i]; dynObj.setAttribute(otherAttribute.attrName,otherAttribute.attrValue); } } /**//*end 添加屬性*/ /**//*添加相關事件*/ if(null!=domParams.eventRegisters) { for(var i=0;i<domParams.eventRegisters.length;i++) { var eventRegister =domParams.eventRegisters[i]; addEventHandler(dynObj,eventRegister.eventType,eventRegister.eventHandler); } } /**//*end 添加相關事件*/ try { childNodeAction('append',domParams.parentNode,dynObj); } catch($e) { } return dynObj; } /**//* 從父結點中刪除子結點 @actionType 默認為append,輸入字符串 append | remove @parentNode 父結點的DOM對象,或者父結點的ID @childNode 被刪除子結點的DOM對象 或者被刪除子結點的ID */ function childNodeAction(actionType,parentNode,childNode) { if(!parentNode) {return; } parentNode=typeof parentNode==='string'?getElement(parentNode):parentNode; childNode=typeof childNode==='string'?getElement(childNode):childNode; if(!parentNode || !childNode) {return;} var action=actionType.toLowerCase(); if( null==actionType || action.length<=0 || action=='append') { action='parentNode.appendChild'; } else { action='parentNode.removeChild'; } try { eval(action)(childNode); } catch($e) { alert($e.message); } } 

使用示例:

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

JavaScript技術通過JS動態創建一個html DOM元素并顯示,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 在线黑人抽搐潮喷 | 色情www日本欧美 | 西西人体大胆牲交PP6777 | 久久久午夜精品福利内容 | 狂操空姐电影 | 暖暖日本 在线 高清 | 日日碰狠狠躁久久躁77777 | 91av电影在线观看 | 亚洲熟妇AV乱码在线观看 | 涩涩免费视频软件 | 午夜亚洲国产理论片二级港台二级 | 少妇高潮A视频 | 久久国产精品免费A片蜜芽 久久国产精品萌白酱免费 久久国产精品麻豆AV影视 | 伊人色综合久久大香 | 老王午夜69精品影院 | 脱jk裙的美女露小内内无遮挡 | 亚洲色欲色欲WWW在线成人网 | 丰满老熟女白浆直流 | 丰满女朋友在线观看中文 | 拔萝卜视频免费看高清 | 国产精品人妻无码久久久蜜桃 | 亚洲精品喷白浆在线观看 | 国产色婷婷精品人妻蜜桃成熟 | 一个人免费观看完整视频日本 | 亚洲午夜精品A片久久软件 亚洲午夜精品A片久久不卡蜜桃 | 奇虎成人网 | 国产精品久久久久久久AV下载 | 国产精选视频在线观看 | 蜜臀AV精品一区二区三区 | 成人影片大全 | 免费中文字幕视频 | 男人边吃奶边摸边做刺激情话 | 亚洲免费黄色片 | 天堂精品国产自在自线 | 亞洲人妻AV無碼在線視頻 | xxxx69美国| 精品欧美一区二区三区四区 | 亚洲精品国偷拍自产在线 | 永久午夜福利视频一区在线观看 | 一个人的免费完整在线观看HD | 亚洲黄色高清 |