• [JS] 005_动态创建HTML内容


     

    (1)使用document.write()

    (2)使用innerHTML

    innerHTML可以用来读写某给定元素里的HTML内容。

    举例:

    <div id="testdiv">

    <p>this is <em>my</em>content</p>

    </div>

    window.onload = function(){

    Var testdiv = document.getElementById("testdiv");

    alert(testdiv.innerHTML);

    }

     

    输出:<p>this is <em>my</em>content</p>

     

    innerHTML的属性:只有一个取值为<p>this is <em>my</em>content</p>的字符串。

    可见:innerHTML属性无细节可言,而DOM提供的方法和属性则可以让我们对div节点中的任何一个进行细节的访问。但是,当你需要把一大段的HTML内容插入一个网页时,innerHTML会更加实用。不仅可以读取元素的HTML内容,还可以用它把HTML内容写入元素。请注意,标准的DOM是可以替代innerHTML的,只是要多编写一些代码。

     

    举例:

    <div id = "testdiv">

    </div>

     

    Window.onload = function(){

      var testdiv = doucument.getElementById("testdiv");

    testdiv.innerHTML = "<p>this is <em>my</em>content</p>";

    }

     

    (3)理解以动态的方式创建HTML内容

    改变DOM节点树就能以动态的方式创建HTML内容

    根据DOM,一个文档就是一棵节点树,如果想把一些HTML的内容【p/ul/li】添加到文档中,就必须在相应的DOM节点树上插入元素节点。如果想要在节点树上添加内容【文本,属性,元素】,就必须插入新的节点。

      

    (4)使用DOM

    ① 插入新的元素节点

    createElement():创建元素节点

    appendChild():将节点插入节点树

     

    举例:

    <div id = "testdiv">

    </div>

     

    现在我们以DOM的标准而不是innerHTML的标准来改变DOM节点树。

    步骤

    1)创建一个新的元素

    Var para = document.createElemnet("p");

    在这一步之后,p元素以in个有了一个nodeTypenodeName属性

     

    2)把这个新元素插入节点树

    首先,我们要获取要插入的节点的父节点,因为p节点是div的子节点,因此,我们要获得div节点。因此,现在的操作如下:

     

    //1 获取父节点

    var testdiv = doucment.getElementById("testdiv");

    //2 创造新的子节点

    Var para = document.createElemnet("p");

    //3 将新的子节点插入到父节点中

    testdiv.appendChild(para);

     

    ② 创建新的文本节点

    createTextNode():创建文本节点

     

    //1 创建文本节点

    var txt = document.createTextNode("hello world");

    //2 找到要插入的节点

    var p = document.getElementByTagName("p");

    //3 在都没中插入文本节点

    p.appendChild(txt);

     

    ③ insertBefore():把一个新元素插入到一个现有元素之前

     

    (5)总结

    ① 使用document.write()方法/innerHTML属性/DOM方法都能够想浏览器里的文档动态添加HTML内容。

    ② 使用createElement或是createTextNode方法创建的节点是JS世界的孤儿,你还需要使用appendChild()方法或者insertBefore()方法把这些"碎片"对象插入到某个文档的节点树上才能让他们呈现在浏览器的窗口里。

    ③ 在需要检索文档的现有信息时,以下的DOM方法最有用

    getElementById()

    getElementByTagName()

    getAttribute()

     

    ④ 在需要把信息添加到文档里去时,以下DOM方法最有用

    createElement()

    createTextNode()

    appendChild()

    insertBefore()

    setAttribute()

     

     

  • 相关阅读:
    textArea打印时,内容不显示
    自定义Metadata验证属性
    C# 扩展类与分布类
    JSON基础 JS操作JSON总结
    如何查看别人公众号的粉丝量
    Powerdesigner逆向工程从sql server数据库生成pdm
    springMVC中前台ajax传json数据后台controller接受对象为null
    Mybatis报错: Invalid bound statement (not found)
    Mysql批量插入数据性能问题
    java中String编码转换 UTF-8转GBK
  • 原文地址:https://www.cnblogs.com/avivaye/p/2773583.html
Copyright © 2020-2023  润新知