天天躁日日躁狠狠躁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元素并顯示,轉載需保留來源!

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

主站蜘蛛池模板: 最近最新的日本字幕MV | 亚洲欧美中文日韩视频 | 久久综合狠狠综合狠狠 | 欧美精品一区二区在线电影 | 青青青青青青草 | av视频在线免播放观看 | 高h浪荡文辣文神奇宝贝 | 国产亚洲精品a在线观看app | 中文字幕爆乳JULIA女教师 | adc影院欢迎您大驾光临入口 | 欧美亚洲国产手机在线有码 | 男人插曲女人身体视频 | 97视频在线观看免费播放 | 成人午夜精品久久久久久久秋霞 | 成年人视频免费在线观看 | 92电影网午夜福利 | 99热这里只有精品视频2 | 饥渴难耐的浪荡艳妇在线观看 | 永久精品免费影院在线观看网站 | 一个人日本的视频免费完整版 | 麻豆啊传媒app黄版破解免费 | 菠萝菠萝蜜免费播放高清 | 国产一区二区三区国产精品 | 精品无码三级在线观看视频 | 香港论理午夜电影网 | 国产精品一区二区AV交换 | 交换邻居波多野结衣中文字幕 | 嘟嘟嘟WWW在线观看视频高清 | 日韩在线看片中文字幕不卡 | 亚洲视频国产在线精品 | 久久久精品免费视频 | 99re5久久热在线 | 国产精品97久久AV色婷婷 | 色翁荡息又大又硬又粗又爽电影 | 亚洲欧美精品无码一区二在线 | 強姧伦久久久久久久久 | 边做边爱免费视频 | 女人久久WWW免费人成看片 | 日日噜噜噜夜夜爽爽狠狠图片 | 99re久久这里只有精品 | 国产在线精品一区二区网站免费 |