JavaScript DOM 动态创建标记

简介: 注意:避免使用document.write() 没有将结构和行为分开 createElement createTextNode创建元素insertBefore 是将指定元素插入目标元素的前面 需要 父元素 ...
注意:避免使用document.write()    没有将结构和行为分开 
createElement  createTextNode创建元素
insertBefore    是将指定元素插入目标元素的前面 需要 父元素   属性 parentNode就可以得到父元素
insertBefore:    var gallery=document.getElementById("sdf");        gallery.insertBefore(new,gallery);gallery
insertAfter:   需要自己编写 挺有用的
function insertAfter(new,old){
    var parent=old.parentNode;
    if(parent.lastChild==old){
        parent.appendChild(new);
    }else{
         old.insertBefore(new,old.nextSibling);
    }
}

innerHTML的使用:
var test=document.getElementById("tes");
test.innerHTML="<p>inserted <em>this</em> content.</p>";
显示的值是inserted this content.


注意:DOM方法如 setAttribute 方法并未改变文档的物理内容 如果用文本编辑器而不是浏览器去打开的话 根本看不到变化 因为浏览器实际显示的是那颗DOM节点树 在浏览器看来DOM节点树才是文档
所以 动态创建标记并不是创建标记 而是改变DOM节点树。

创建元素:var para=document.createElement("p"); 一般创建出来就赋值给一个变量
var para=document.createElement("p");
var testdiv=document.getElementById("testDiv");
testdiv.appendChild(para);
和
testdiv.appendChild(document.createElement("p"));

创建文本元素:
var para=document.createElement("p");
var testdiv=document.getElementById("testdiv");
var testdiv.appendChild(para);
var txt=document.createTextNode("hello world");
para.appendChild(txt);

如果创建 更复杂的组合呢? 如   <p>this is <em>my</em> content.</p>

function(){
    var txt1=document.createTextNode("this is ");
    var emx=document.createElement("em");
    var txt2=document.createTextNode("my");
    var txt3=document.createTextNode("content.");
    var para=document.createElement("p");
    para.appendChild(txt1);
    para.appendChild(emx);
    emx.appendChild(txt2);
    para.appendChild(txt3);vv
    var textdiv=document.getElementById("divTe");
    testdiv.appendChild(para);
}

重回图片库 :  html中的一个图片和文字仅仅是为了showPic服务 这些元素的存在只是为了让DOMD来处理他们呢 那么只能用DOM的方法来创建他们就好了
var placeholder=document.createElement("img");
 placeholder.setAttribute("src","xx.gif");
placeholder.setAttribute("id","sdf");
var decription=document.createElement("p");
decription.setAttribute("id","zzz");
var desctext=document.createTextNode("choose an image");
decription.appendChild(desctext);

可以直接最佳到body元素节点后面
document.getElementByTagName("body")[0].appendChild(placeholder);
document.getElementByTagName("body")[0].appendChild(decription);
也可以用HTML-DOM 
document.body.appendChild(placeholder);
document.body.appendChild(decription);

最后图片库改进后的结果是:
function insertAfter(new,old){
    var parent=old.parentNode;
    if(parent.lastChild==old){
        parent.appendChild(new);
    }else{
         old.insertBefore(new,old.nextSibling);
    }
}

function prepare(){
if(!document.createElement) return false;
if(!document.createTextNode) return false;
if(!document.getElementById) return false;
if(!document.getElementById("imagegallery")) return false;
var placeholder=document.createElement("img");
placeholder.setAttribute("src","xx.gif");
placeholder.setAttribute("id","sdf");
var decription=document.createElement("p");
decription.setAttribute("id","zzz");
var desctext=document.createTextNode("choose an image");
decription.appendChild(desctext);
var gallery=document.getElementById("imageallery");
insertAfter(placeholder,gallery);
insertAfter(decription,placeholder);    
}

目录
相关文章
|
2月前
|
JavaScript 前端开发 Go
CSS 与 JS 对 DOM 解析和渲染的影响
【10月更文挑战第16天】CSS 和 JS 会在一定程度上影响 DOM 解析和渲染,了解它们之间的相互作用以及采取适当的优化措施是非常重要的。通过合理的布局和加载策略,可以提高网页的性能和用户体验,确保页面能够快速、流畅地呈现给用户。在实际开发中,要根据具体情况进行权衡和调整,以达到最佳的效果。
|
1月前
|
JavaScript 前端开发 索引
js中DOM的基础方法
【10月更文挑战第31天】这些DOM基础方法是操作网页文档结构和实现交互效果的重要工具,通过它们可以动态地改变页面的内容、样式和行为,为用户提供丰富的交互体验。
|
1月前
|
缓存 JavaScript 前端开发
JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用
本文深入讲解了 JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用。
47 5
|
1月前
|
JavaScript 前端开发 开发者
.js的dom元素操作
【10月更文挑战第29天】通过灵活运用这些 DOM 元素操作方法,JavaScript 可以实现丰富的网页交互效果,如动态更新页面内容、响应用户操作、创建和删除页面元素等。在实际开发中,开发者可以根据具体的需求和场景,选择合适的 DOM 元素操作方法来实现所需的功能,为用户提供更加流畅和动态的网页体验。
|
1月前
|
JavaScript 前端开发
在 JavaScript 中动态创建插槽内容
【10月更文挑战第26天】在JavaScript中动态创建插槽内容有多种方法,从简单的字符串拼接和DOM操作到使用流行的框架如Vue.js和React等。选择哪种方法取决于项目的具体需求和所使用的技术栈。在简单的静态页面中,原生的JavaScript DOM操作可能就足够了;而在复杂的单页应用中,使用框架可以提供更好的开发体验、性能优化和代码组织。
|
2月前
|
移动开发 JavaScript 前端开发
原生js如何获取dom元素的自定义属性
原生js如何获取dom元素的自定义属性
84 4
|
3月前
|
JavaScript 前端开发 索引
JavaScript HTML DOM 节点列表
JavaScript HTML DOM 节点列表
24 5
|
3月前
|
JavaScript 前端开发 索引
JavaScript HTML DOM 集合(Collection)
JavaScript HTML DOM 集合(Collection)
40 4
|
2月前
|
JavaScript 前端开发 容器
js之dom学习
js之dom学习
48 0
|
2月前
|
JavaScript 前端开发 UED
【前端基础篇】JavaScript之DOM介绍2
【前端基础篇】JavaScript之DOM介绍
29 0