w3c标准 – Dom

w3c标准 – Domw3c标准-Dom1.DOM(1)DOM:W3C的标准,定义了访问HTML和XML文档的标准。 (2)分类     a.核心DOM-针对任何结构化文档的标准模型.     b.XMLDOM-针对XML文档的标准模型(XMLDOM定义了所有XML元素的对象和属性,以及访问它们的方法)

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

w3c标准 – Dom


1. DOM


(1) DOM : W3C的标准,定义了访问HTML和XML文档的标准。 


(2) 分类


        a. 核心 DOM – 针对任何结构化文档的标准模型.
        b. XML DOM – 针对 XML 文档的标准模型 (XML DOM 定义了所有 XML 元素的对象和属性,以及访问它们的方法)
        c. HTML DOM – 针对 HTML 文档的标准模型

(3)HTML DOM


HTML DOM 是: 
        HTML 的标准对象模型
        HTML 的标准编程接口
        W3C 标准
HTML DOM 定义了所有 HTML 元素的对象和属性,以及访问它们的方法。换言之,HTML DOM 是关于如何获取、修改、添加或删除 HTML 元素的标准。


2. HTML DOM

(1) DOM节点: HTML文档中的所有内容都是节点


   
w3c标准 - Dom


a. 整个文档是一个文档节点
b. 每个HTML元素是元素节点
c. HTML元素内的文本是文本节点
d. 每个HTML属性是属性节点
e. 注释是注释节点

(2) 节点父(parent),子(child)和同胞(sibling)


a. 在节点树中,顶端节点被称为根(root)
b. 每个节点都有父节点、除了根(它没有父节点)
c. 一个节点可拥有任意数量的子
d. 同胞是拥有相同父节点的节点

(3)方法: 开发人员可以在节点上执行的操作


                          
w3c标准 - Dom


下面是一些方法的实际调用,具体的调用参数大家可以查看为w3c.

div id="test_dom">


</div>

<script type="text/javascript">
    var testDomDiv = document.getElementById("test_dom");

    //CreateElement.
    var newdivElement = document.createElement('div');
    testDomDiv.appendChild(newdivElement);

    //CreateAttribute.
    var newAttribute = document.createAttribute('class');
    newAttribute.value = 'footer';
    newdivElement.setAttributeNode(newAttribute);

    newdivElement.setAttribute('data', '123');

    //CretateComment.
    var createComment = document.createComment("This the comment for create comment!");
    testDomDiv.appendChild(createComment);

    //InsertBefore.
    var createCommentInsertBefore = document.createComment("This is the comment for insert before");
    testDomDiv.insertBefore(createCommentInsertBefore, createComment);

    //replaceChild.
    var replaceChild = document.createComment("This is used to test the replace child");
    testDomDiv.replaceChild(replaceChild, createCommentInsertBefore);

    //createtTextNode.
    var createTextNode = document.createTextNode("This the test for testing");
    testDomDiv.appendChild(createTextNode);
</script>

下面是上面代码执行之后的结果


w3c标准 - Dom


(4) 属性


    //innerhtml 属性对于获取或替换 HTML 元素的内容很有用。    //Note: 这个属性适用于元素节点,对于属性,注释,文本,文档节点返回的结果都是undefined    console.debug("InnerHtml");    console.log("Element InnerHtml  : " + testDomDiv.innerHTML);    console.log("Attribute InnerHtml: " + newAttribute.innerHTML);        console.log("Comment InnerHtml  : " + createComment.innerHTML);    console.log("Text InnerHtml     : " + createTextNode.innerHTML);    console.log("Document InnerHtml : " + document.innerHTML);    console.log();    //nodeName :节点的名称,只读的。    //Note: (1)元素节点的NodeName 与标签名相同。    //Note: (2)属性节点的NodeName 与属性名相同。    //Note: (3)注释节点的NodeName 始终是 #comment。    //Note: (4)文本节点的NodeName 始终是 #text。    //Note: (5)文档节点的NodeName 始终是 #document。    console.debug("NodeName");    console.log("Element NodeName   : " + testDomDiv.nodeName);    console.log("Attribute NodeName : " + newAttribute.nodeName);    console.log("Comment NodeName   : " + createComment.nodeName);    console.log("Text NodeName      : " + createTextNode.nodeName);    console.log("Document NodeName  : " + document.nodeName);    console.log();    //nodeType : 节点的类型,只读的。    //Note: (1)元素节点的NodeType 1    //Note: (2)属性节点的NodeType 2    //Note: (3)注释节点的NodeType 8    //Note: (1)文本节点的NodeType 9    //Note: (1)文档节点的NodeType 3    console.debug("NodeType");    console.log("Element NodeType   : " + testDomDiv.nodeType);    console.log("Attribute NodeType : " + newAttribute.nodeType);    console.log("Comment NodeType   : " + createComment.nodeType);    console.log("Text NodeType      : " + createTextNode.nodeType);    console.log("Document NodeType  : " + document.nodeType);    console.log();    //nodeValue : 节点的值。    //Note: (1)元素节点的NodeValue null    //Note: (2)属性节点的NodeValue 是属性值    //Note: (3)注释节点的NodeValue 是注释的内容    //Note: (1)文本节点的NodeValue 是文本本身    //Note: (1)文档节点的NodeValue null    console.debug("NodeValue");    console.log("Element NodeValue  : " + testDomDiv.nodeValue);    console.log("Attribute NodeValue: "+ newAttribute.nodeValue);    console.log("Comment NodeValue  : " + createComment.nodeValue);    console.log("Text NodeValue     : " + createTextNode.nodeValue);    console.log("Document NodeValue : " + document.nodeValue);

看一下浏览器上的输出结果


w3c标准 - Dom


Summary:  针对node的属性除了InnerHtml日常之间可能用到的多,其他的三个用到的其实不多,但是这几个属性确实会在一些框架的源码中出现,因为框架越方便,就证明其中必然框架本身会做许多的事情,例如knockout,angular里面有很多的data-bind,这个其实会在整个dom渲染之后js会去遍历节点,然后通过节点的这几个属性去区分节点的不同。

(5) HTML DOM的修改


(1)改变 HTML 内容
(2)改变 CSS 样式
(3)改变 HTML 属性
(4)创建新的 HTML 元素
(5)删除已有的 HTML 元素
(6)改变事件(处理程序)

(6). HTML DOM事件: html dom 允许Javascript对html事件做出反应。


a. 当事件发生时,可以执行javascript。

    onclick = Javascript javascript代码直接写在事件处理程序中,或者从事件处理程序中调用函数

b. 事件属性: 如需想HTML元素分配事件,可以使用事件属性,在html标签中属性用于事件处理的就是事件属性。

c. HTML DOM允许使用Javascript向HTML元素分配事件。

(7). HTML DOM导航


a. 节点属性parentNode、firstChild 以及 lastChild

b. DOM根节点

    document.documentElement    – 全部文档           <html><body></body></html>

    document.body                         – 文档的主体         <body></body>

    #document                                – 带有 !DOCTYPE 标签 <!DOCTYPE html><html><body></body></html>

c. 使用 childNodes 和 nodeValue 属性来获取元素的内容

    //id 为intro的元素为一个p标签

    var txt=document.getElementById(“intro”).childNodes[0].nodeValue;

3. Summary


        对于Html DOM这个东西,看完了整个w3c上的教程之后,自己也思考了一下,我自己的认识如下:
        DOM 是 Document Object Model(文档对象模型)的缩写,从字面意思可以看出这其实就像是将一个事物抽象出来的对象,以这个对象来代表这个事物,就像以html dom来代表html。通过对象的方法来实现我们想要的结果或者拿到我们需要的信息。我们可以通过html dom的操作去获得html上的信息,去添加,删除,修改其中的节点(节点上的属性)。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/193054.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • es6 模板字符串_json字符串转成标准格式输出

    es6 模板字符串_json字符串转成标准格式输出模板字符串使用的是返引号,就是键盘左上角esc下面那个键,使用模板字符串可以更方便于传参例如:当我们需要在url后面跟一个参数的时候以前我们可以这样写varpath=path+’:’+id.toString()&lt;ahref={path}&gt;现在我们可以这样写&lt;ahref=`path/:${id}`&gt;上面的path是一个路由…

  • pycharm2021 6月激活码【在线破解激活】

    pycharm2021 6月激活码【在线破解激活】,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • 域渗透之导出域Hash

    域渗透之导出域Hash前言网上采集了一些域内导出NTDS.dit文件的方式Hash值存储在域控制器中(C:\Windows\NTDS\NTDS.DIT)MimikatzMimikatz有一

    2021年12月13日
  • Android Studio下载、安装和配置+SDK+tools下载(无敌超级详细版本)

    Android Studio下载、安装和配置+SDK+tools下载(无敌超级详细版本)下载:AndersonStudio是Google为Android提供的官方IDE工具,下载地址:http://www.android-studio.org/安装环境要求:其中JDK的最低版本是1.7,所以系统空闲内存至少2GB。如果你要安装andriod8.0左右的版本,最好内存能有8GB。AndroidStudio安装过程:以android-studio-id…

  • 【转】【Asp.Net】asp.net(c#) 网页跳转[通俗易懂]

    【转】【Asp.Net】asp.net(c#) 网页跳转[通俗易懂]在asp.net下,经常需要页面的跳转,下面是具体的几种方法。跳转页面是大部编辑语言中都会有的,正面我们来分别介绍一下关于.net中response.redirectsever.executeserver.transfer三种页面跳转的方法:①response.redirect这个跳转页面的方法跳转的速度不快,因为它要走2个来回(2次postback),但他可以跳转到任何页面,没…

  • Win10 快捷键大全(史上最全)「建议收藏」

    Win10 快捷键大全(史上最全)「建议收藏」windows10常用快捷键。win10正式版是微软续已发布的Windows系统的最新版操作系统。windows10(win10正式版)让人感到最意外的就是直接跳过了win9。那么今天我为大家讲解他推出的常用快捷键。希望能够帮到大家。复制、粘贴和其他常规键盘快捷方式按此键执行此操作Ctrl+X剪切选定项Ctrl+C(或Ctrl+Insert)复制选…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号