• dom,bom


    当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。

    HTML DOM 模型被构造为对象的树,如图:

    通过可编程的对象模型,JavaScript 获得了足够的能力来创建动态的 HTML。

    • JavaScript 能够改变页面中的所有 HTML 元素
    • JavaScript 能够改变页面中的所有 HTML 属性
    • JavaScript 能够改变页面中的所有 CSS 样式
    • JavaScript 能够对页面中的所有事件做出反应

     

    查找 HTML 元素

    • 通过id查找HTML元素。用方法:document.getElementById(id_name);
    • 通过标签名查找HTML元素。用方法:getElementsByTagName(tag_name);
    • 通过类名查找 HTML 元素在 IE 5,6,7,8 中无效。这里暂不讨论

    DOM 改变 HTML 输出流

    复制代码
    <!DOCTYPE html>
    <html>
    <body>
    
    <script>
    document.write(Date());   //绝不要使用在文档加载之后使用 document.write()。这会覆盖该文档。
    </script>
    
    </body>
    </html>
    复制代码

    改变 HTML 内容

    语句:document.getElementById(id).innerHTML=new HTML

    复制代码
    <html>
    <body>
    
    <p id="p1">Hello World!</p>
    
    <script>
    document.getElementById("p1").innerHTML="New text!";
    </script>
    
    </body>
    </html>
    复制代码

    改变 HTML 属性

    复制代码
    <!DOCTYPE html>
    <html>
    <body>
    
    <img id="image" src="smiley.gif">
    
    <script>
    document.getElementById("image").src="landscape.jpg";
    </script>
    
    </body>
    </html>
    复制代码

    改变 HTML 样式

    语句: document.getElementById(id).style.property=new style

    复制代码
    <!DOCTYPE html>
    <html>
    <body>
    
    <h1 id="id1">My Heading 1</h1>
    <button type="button" 
    onclick="document.getElementById('id1').style.color='red'">
    Click Me!</button>
    
    </body>
    </html>
    复制代码

    对事件做出反应

    我们可以在事件发生时执行 JavaScript,比如当用户在 HTML 元素上点击时。

    如需在用户点击某个元素时执行代码,请向一个 HTML 事件属性添加 JavaScript 代码:onclick=JavaScript

    HTML 事件的例子:

    • 当用户点击鼠标时
    • 当网页已加载时
    • 当图像已加载时
    • 当鼠标移动到元素上时
    • 当输入字段被改变时
    • 当提交 HTML 表单时
    • 当用户触发按键时

    点击文本内容改变文本:

    复制代码
    <!DOCTYPE html>
    <html>
    <body>
    <h1 onclick="this.innerHTML='Ooops!'">Click on this text!</h1>
    </body>
    </html>
    复制代码

    点击按键改变文本内容:

    复制代码
    <!DOCTYPE html>
    <html>
    <head>
    <script>
    function changetext(id)
    {
    id.innerHTML="Ooops!";
    }
    </script>
    </head>
    <body>
    <h1 onclick="changetext(this)">Click on this text!</h1>
    </body>
    </html>
    复制代码

    点击按键文本内容:

    复制代码
    <html>
    <body>
    <p>点击按钮执行 <em>displayDate()</em> 函数.</p>
    <button onclick="displayDate()">点这里</button>
    <script>
    function displayDate()
    {
    document.getElementById("demo").innerHTML=Date();
    }
    </script>
    <p id="demo"></p>
    </body>
    </html>
    复制代码

    给按钮定义一个事件:

    复制代码
    <html>
    <head>
    </head>
    <body>
    <p>点击按钮执行 <em>displayDate()</em> 函数.</p>
    <button id="myBtn">点这里</button>
    <script>
    document.getElementById("myBtn").onclick=function(){displayDate()};
    function displayDate()
    {
    document.getElementById("demo").innerHTML=Date();
    }
    </script>
    <p id="demo"></p>
    </body>
    </html>
    复制代码

    鼠标在文本上,不在文本上,鼠标点击,鼠标起来。

    复制代码
    <html>
    <body>
    <div onmouseover="mOver(this)" onmouseout="mOut(this)" style="120px;height:20px;padding:40px;">Mouse Over Me</div>
    <div onmousedown="mOver(this)" onmouseup="mOut(this)" style="120px;height:20px;padding:40px;">Mouse Over Me</div>
    <script>
    function mOver(obj)
    {
    obj.innerHTML="Thank You"
    }
    
    function mOut(obj)
    {
    obj.innerHTML="Mouse Over Me"
    }
    </script>
    </body>
    </html>
    复制代码

    创建新的 HTML 元素

    复制代码
    <div id="div1">
    <p id="p1">This is a paragraph.</p>
    <p id="p2">This is another paragraph.</p>
    </div>
    
    <script>
    var para=document.createElement("p");
    var node=document.createTextNode("This is new.");
    para.appendChild(node);
    
    var element=document.getElementById("div1");
    element.appendChild(para);
    </script>
    复制代码

    删除已有的 HTML 元素

    <div id="div1">
    <p id="p1">This is a paragraph.</p>
    <p id="p2">This is another paragraph.</p>
    </div>
    <script>
    var parent=document.getElementById("div1");
    var child=document.getElementById("p1");
    parent.removeChild(child);
    </script>

    原文:https://www.cnblogs.com/haoshine/p/5715885.html

    一.Javascript组成
    JavaScript的实现包括以下3个部分:

    ECMAScript(核心)

    描述了JS的语法和基本对象。

    文档对象模型 (DOM)

    处理网页内容的方法和接口

    浏览器对象模型(BOM)

    与浏览器交互的方法和接口

    javascript 有三部分构成,ECMAScript,DOM和BOM,根据宿主(浏览器)的不同,具体的表现形式也不尽相同,ie和其他的浏览器风格迥异,IE 扩展了 BOM,加入了 ActiveXObject 类,可以通过 JavaScript 实例化 ActiveX 对象

    1. DOM 是 W3C 的标准; [所有浏览器公共遵守的标准]
    2. BOM 是 各个浏览器厂商根据 DOM在各自浏览器上的实现;[表现为不同浏览器定义有差别,实现方式不同]
    3. window 是 BOM 对象,而非 js 对象;javacsript是通过访问BOM(Browser Object Model)对象来访问、控制、修改客户端(浏览器)

    ECMAScript扩展知识:

    ① ECMAScript是一个标准,JS只是它的一个实现,其他实现包括ActionScript。

    ② “ECMAScript可以为不同种类的宿主环境提供核心的脚本编程能力……”,即ECMAScript不与具体的宿主环境相绑定,如JS的宿主环境是浏览器,AS的宿主环境是Flash。

    ③ECMAScript描述了以下内容:语法、类型、语句、关键字、保留字、运算符、对象。

    二. DOM, DOCUMENT, BOM, WINDOW 区别
    DOM 是为了操作文档出现的 API,document 是其的一个对象;
    BOM 是为了操作浏览器出现的 API,window 是其的一个对象。

    BOM是浏览器对象模型,DOM是文档对象模型,前者是对浏览器本身进行操作,而后者是对浏览器(可看成容器)内的内容进行操作


     


    归DOM管的:

    E区(就是你说的document啦。由web开发人员呕心沥血写出来的一个文件夹,里面有index.html,CSS和JS什么鬼的,部署在服务器上,我们可以通过浏览器的地址栏输入URL然后回车将这个document加载到本地,浏览,右键查看源代码等。

    归BOM管的:

    A区(浏览器的标签页,地址栏,搜索栏,书签栏,窗口放大还原关闭按钮,菜单栏等等)

    B区(浏览器的右键菜单)

    C区(document加载时的状态栏,显示http状态码等)

    D区(滚动条scroll bar)

    2.1 DOM
    DOM 全称是 Document Object Model,也就是文档对象模型。是针对XML的基于树的API。描述了处理网页内容的方法和接口,是HTML和XML的API,DOM把整个页面规划成由节点层级构成的文档。

    这个DOM定义了一个HTMLDocument和HTMLElement做为这种实现的基础,就是说为了能以编程的方法操作这个 HTML 的内容(比如添加某些元素、修改元素的内容、删除某些元素),我们把这个 HTML 看做一个对象树(DOM树),它本身和里面的所有东西比如 <div></div> 这些标签都看做一个对象,每个对象都叫做一个节点(node),节点可以理解为 DOM 中所有 Object 的父类。

        DOM 有什么用?就是为了操作 HTML 中的元素,比如说我们要通过 JS 把这个网页的标题改了,直接这样就可以了:

    document.title = 'how to make love';

    这个 API 使得在网页被下载到浏览器之后改变网页的内容成为可能。

    2.2 document

    当浏览器下载到一个网页,通常是 HTML,这个 HTML 就叫 document(当然,这也是 DOM 树中的一个 node),从上图可以看到,document 通常是整个 DOM 树的根节点。这个 document 包含了标题(document.title)、URL(document.URL)等属性,可以直接在 JS 中访问到。

    在一个浏览器窗口中可能有多个 document,例如,通过 iframe 加载的页面,每一个都是一个 document。

    在 JS 中,可以通过 document 访问其子节点(其实任何节点都可以),如

    document.body;document.getElementById('xxx');

    2.3 BOM
    BOM 是 Browser Object Model,浏览器对象模型。

    刚才说过 DOM 是为了操作文档出现的接口,那 BOM 顾名思义其实就是为了控制浏览器的行为而出现的接口。
    浏览器可以做什么呢?比如跳转到另一个页面、前进、后退等等,程序还可能需要获取屏幕的大小之类的参数。
    所以 BOM 就是为了解决这些事情出现的接口。比如我们要让浏览器跳转到另一个页面,只需要

    location.href = "http://www.xxxx.com";这个 location 就是 BOM 里的一个对象。

    由于BOM的window包含了document,因此可以直接使用window对象的document属性,通过document属性就可以访问、检索、修改XHTML文档内容与结构。因为document对象又是DOM(Document Object Model)模型的根节点。

    可以说,BOM包含了DOM(对象),浏览器提供出来给予访问的是BOM对象,从BOM对象再访问到DOM对象,从而js可以操作浏览器以及浏览器读取到的文档。

    2.4 window

        window 也是 BOM 的一个对象,除去编程意义上的“兜底对象”之外,通过这个对象可以获取窗口位置、确定窗口大小、弹出对话框等等。例如我要关闭当前窗口:

    window.close();

    三.浏览器对象模型(BOM)
    BOM和DOM的结构关系示意图

    BOM的核心是Window,而Window对象又具有双重角色,它既是通过js访问浏览器窗口的一个接口,又是一个Global(全局)对象。这意味着在网页中定义的任何对象,变量和函数,都以window作为其global对象。

    Window对象包含属性:document、location、navigator、screen、history、frames

    Document根节点包含子节点:forms、location、anchors、images、links

    从window.document已然可以看出,DOM的最根本的对象是BOM的window对象的子对象。

    区别:DOM描述了处理网页内容的方法和接口,BOM描述了与浏览器进行交互的方法和接口

    原文:https://blog.csdn.net/qq877507054/article/details/51395830 

  • 相关阅读:
    安装并运行Nacos
    为什么浏览器记住密码会影响表单?
    Oracle数据库的函数
    前端axios传递一个包含数组的对象到后台,后台可以用String接收,也可以用List集合接收
    文字链接Link
    DatePicker日期选择器的使用
    前端解决查询慢的问题
    【华为云技术分享】自动驾驶网络系列四:我们谈自动驾驶网络到底在谈什么?
    【华为云技术分享】低代码开发平台发展趋势:低代码——炒作还是趋势?
    【华为云技术分享】【昇腾】ModelArts与Atlas 200 DK云端协同开发——行人检测Demo(提供完整Demo)
  • 原文地址:https://www.cnblogs.com/xcee/p/9827813.html
Copyright © 2020-2023  润新知