HTML DOM


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

DOM节点类型


  • 文档节点 (document,唯一)
  • 元素节点 (那些个标签div,p之类)
  • 属性节点(class,src这种)
  • 文本节点(插入在p,div内的文本)
 

document中的open()定义和用法


open() 方法可打开一个新文档,并擦除当前文档的内容。

语法

document.open(mimetype,replace)
参数 描述
mimetype 可选。规定正在写的文档的类型。默认值是 "text/html"。
replace 可选。当此参数设置后,可引起新文档从父文档继承历史条目。

说明

该方法将擦除当前 HTML 文档的内容,开始一个新的文档,新文档用 write() 方法或 writeln() 方法编写。

提示和注释

重要事项:调用 open() 方法打开一个新文档并且用 write() 方法设置文档内容后,必须记住用 close 方法关闭文档,并迫使其内容显示出来。

注释:属于被覆盖的文档的一部分的脚本或事件句柄不能调用该方法,因为脚本或事件句柄自身也会被覆盖。

function createNewDoc()
{
var newDoc = document.open("test/html","replace");
var txt = "学习 DOM 非常有趣!";
newDoc.write(txt);
newDoc.close();
}



<input type="button" value="打开并写入一个新文档" onclick="createNewDoc()"/>
 

查找元素方式


//查找id为shanghai的元素
var shanghai= docment.getElementById('shanggai'); //查找name为city的元素集合
var citys = docment.getElementByNames('city'); //查找class为btn btn-info的元素集合
var buttons = getElementsByClassName('btn btn-info'); //在citys对象中查找标签名为li的元素集合
var li = citys.getElementsByTagName('li');

改变标签内容和属性


//获取id为"div"的元素
var node = document.getElementById('div'); //增加或改变元素属性
document.getElementById('div').setAttribute("class","window j"); //返回节点名称
var name = node.nodeName; //返回节点类型
var type = node.nodeType; //返回父节点
var parent = node.parentNode; //返回子节点集合
var childs = node.childNodes; //删除当前节点
node.parentNode.removeChild(node); //创建节点
var div = document.createElement('DIV'); //替换节点(新的节点,被替换的节点)
node.parentNode.replaceChild(div, node); //添加子节点
node.appendChild(div);

innerText、innerHTML、nodeValue 三者的区别


innerText: 设置或获取位于启始标签和结束标签之间的字符串

<div id="div">Hello World</div>
<input type="text" id="input" /> //输出为"Hello World"
var div = document.getElementById('div').innerText;
//输出为""
var input= document.getElementById('input').innerText;

innerHTML: 设置或返回位于启始标签和结束标签之间的 HTML文本

<div id="div"><span>Hello World</span></div>

//输出为"<span>Hello World</span>"
var div = document.getElementById('div').innerHTML;

nodeValue: 设置或返回属性节点和文本节点的值。

<div id="div" class="div class">
<span id="span">Hello World</span>
</div> var div = document.getElementById('div');
var span = document.getElementById('span'); //输出为null,因为div属于元素节点,元素节点是没有值的
console.log(div.nodeValue); //输出为"div class" 属性节点是有值的
console.log(div.getAttributeNode('class').nodeValue);
//输出为"div"
console.log(div.getAttributeNode('id').nodeValue); //输出为"Hello World",span实际上有一个子节点,该节点是一个文本节点,
//文本节点虽然没有标签,但它依然是一个节点
console.log(span.childNodes[0].nodeValue);

中文在线API


http://www.w3cschool.cn/htmldom/htmldom-tutorial.html

前端学习笔记之HTML DOM操作的更多相关文章

  1. 前端学习(二十三)DOM操作,事件(笔记)

    javascript 组成部分    1.ECMAScript        javascript的核心解释器 2.DOM        Document Object Modle         文 ...

  2. HTML 学习笔记 JQuery(DOM 操作)

    一般来说,DOM操作分为三个方面,即:DOM Core(核心), HTML_DOM 和 CSS_DOM. 1.DOM Core DOM Core 并不专属于JavaScript,任何一种支持DOM的程 ...

  3. JavaScript学习笔记系列2:Dom操作(一)

    一.什么是Dom? DOM------>Document Object Model 直接翻译就是文档对象模型. DOM------>定义了表示和修改文档所需的对象.这些对象的行为和属性以及 ...

  4. HTML 学习笔记 JQuery(DOM 操作2)

    接着上一节的将,这一节从复制节点讲起 复制节点 继续使用之前的例子 如果单击<li>元素后 需要在复制一个<li>元素,可以使用clone()方法完成.全部代码如下 <h ...

  5. HTML 学习笔记 JQuery(DOM 操作3)

    设置和获取HTML 文本 和 值 1.html()方法 类似于JavaScript中的innerHTML属性,可以用来读取或者设置某个元素中的HTML内容 例子 <html> <he ...

  6. 【前端】Web前端学习笔记【1】

    ... [2015.12.02-2016.02.22]期间的学习笔记. 相关博客: Web前端学习笔记[2] 1. JS中的: (1)continue 语句 (带有或不带标签引用)只能用在循环中. ( ...

  7. Web前端学习笔记(001)

    ....编号    ........类别    ............条目  ................明细....................时间 一.Web前端学习笔记         ...

  8. 【前端】Web前端学习笔记【2】

    [2016.02.22至今]的学习笔记. 相关博客: Web前端学习笔记[1] 1. this在 JavaScript 中主要有以下五种使用场景 在全局函数调用中,this 绑定全局对象,浏览器环境全 ...

  9. RX学习笔记:JavaScript数组操作

    RX学习笔记:JavaScript数组操作 2016-07-03 增删元素 unshift() 在数组开关添加元素 array.unshift("value"); array.un ...

随机推荐

  1. JAVA学习资源网站

    中文java技术网——http://www.cn-java.com/ 灰狐动力(http://www.huihoo.com/)—— 该站点有许多的开源的项目的介绍和学习,涉及操作系统,数据库等许多方向 ...

  2. 转载: crypto:start() 错误。

    错误信息: Eshell V5.10.3  (abort with ^G)1> crypto:start().** exception error: undefined function cry ...

  3. ubuntu被delete的文件位置

    在-/.local/share/Trash/files下边 可以通过 cd / find -name <filename> 找到盖文件的位置

  4. linux系统命令记录

    系统 # uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinfo # 查看CPU信息 # ho ...

  5. 设置Android程序图标和程序标题

    修改程序名称 在/res/values/strings.xml中修改程序名称,例如: <string name="app_name">你的程序名称</string ...

  6. UE4关于编译配置的参考(Debug,DebugGame,Development,Shipping,Test等)

    https://docs.unrealengine.com/latest/CHN/Programming/Development/BuildConfigurations/index.html 编译配置 ...

  7. CentOS 6.5 配置IP地址的三种方法

    1.自动获取IP地址虚拟机使用桥接模式,相当于连接到物理机的网络里,物理机网络有DHCP服务器自动分配IP地址.#dhclient 自动获取ip地址命令#ifconfig 查询系统里网卡信息,ip地址 ...

  8. Objective-C代码学习大纲(4)

    2011-05-11 14:06 佚名 otierney 字号:T | T 本文为台湾出版的<Objective-C学习大纲>的翻译文档,系统介绍了Objective-C代码,很多名词为台 ...

  9. 在虚拟机中的搭建Web服务器(CentOS)

    1.制作本地yum源 相关可查看:http://www.cnblogs.com/xiaomingzaixian/p/8424290.html 2.安装JDK 上传上传jdk-7u45-linux-x6 ...

  10. Caused by: java.sql.SQLException: Failed to start database 'metastore_db' with class loader org.apache.spark.sql.hive.client.IsolatedClientLoader$$anon$1@d7c365, see the next exception for details.

    解决方法:https://stackoverflow.com/questions/37442910/spark-shell-startup-errors 异常: 18/01/29 19:04:27 W ...