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

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

主站蜘蛛池模板: 白银谷在线观看 | 最新无码国产在线视频9299 | 最新亚洲中文字幕在线观看 | 色久悠悠无码偷拍自怕 | 国产色偷偷男人的天堂 | 亚洲精品久久一区二区三区四区 | 亚洲国产精品无码2019 | 色狠狠色狠狠综合天天 | 久久亚洲视频 | 久久视频这里只精品99re8久 | 妖精视频免费高清观看 | 99re久久免费热在线视频手机 | 网红主播 国产精品 开放90后 | 色欲狠狠躁天天躁无码中文字幕 | 成人国产精品日本在线 | 亚洲国产成人爱AV在线播放丿 | 色欲久久精品AV无码 | 亚洲精品综合在线影院 | 免费精品国产人妻国语麻豆 | 国产九色在线 | 国产精品私人玩物在线观看 | 高hnp肉文 | 国产色偷偷男人的天堂 | 成人无码国产AV免费看 | 国产成人高清在线观看播放 | 日本久久久久亚洲中字幕 | 99热久久久无码国产精品性麻豆 | 国产AV无码一二三区视频 | 老师别揉我胸啊嗯小说 | 在线天天看片免费视频观看 | 人妻少妇偷人精品无码洋洋AV | 嘿嘿视频在线观看 成人 | 啪啪漫画无遮挡全彩h网站 啪啪漫画无遮挡全彩h同人 | 久久毛片免费看一区二区三区 | 成年人免费观看视频网站 | 国产成人拍精品视频网 | 久久国产热视频99rev6 | 亚洲 天堂 国产在线播放 | 最新无码国产在线视频2020 | 成人小视频在线观看免费 | 蜜臀AV色欲A片无码一区 |