前端

DOM操作

2019-02-19  本文已影响90人  学的会的前端

DOM定义:

文档对象模型 (DOM) 是HTML和XML文档的编程接口。它给文档(结构树)提供了一个结构化的表述并且定义了一种方式—程序可以对结构树进行访问,以改变文档的结构,样式和内容。
DOM 提供了一种表述形式将文档作为一个结构化的节点组以及包含属性和方法的对象。从本质上说,它将web 页面和脚本或编程语言连接起来了。


image

document对象

每个载入浏览器的HTML文档都会成为document对象,document对象包含文档的基本信息,我们可以用通过JavaScript对HTML页面中的所有元素进行访问修改。

TIM图片20190219134010.png

document对象常用属性:

// 假定当前网址为http://user:passwd@www.example.com:4097/path/a.html?x=111#part1
document.location.href // "http://user:passwd@www.example.com:4097/path/a.html?x=111#part1"
document.location.protocol // "http:"
document.location.host // "www.example.com:4097"
document.location.hostname // "www.example.com"
document.location.port // "4097"
document.location.pathname // "/path/a.html"
document.location.search // "?x=111"
document.location.hash // "#part1"
document.location.user // "user"
document.location.password // "passed"
TIM图片20190219135025.png
// 跳转到另一个网址
document.location.assign('http://www.google.com')
// 优先从服务器重新加载
document.location.reload(true)
// 优先从本地缓存重新加载(默认值)
document.location.reload(false)
// 跳转到另一个网址,但当前文档不保留在history对象中,
// 即无法用后退按钮,回到当前文档
document.location.assign('http://www.google.com')
// 将location对象转为字符串,等价于document.location.href
document.location.toString()
虽然location属性返回的对象是只读的,但是可以将URL赋值给这个属性,网页就会自动跳转到指定网址。
document.location = 'http://www.example.com';
// 等价于
document.location.href = 'http://www.example.com';
document.location = '当前页面地址'
document.location.reload(true)
document.location.assign('当前页面地址')
  1. loading:加载HTML代码阶段,尚未解析完成。
  2. interactive:加载外部资源阶段。
  3. complete:全部加载完成。
<p>
  123
  <span>456</span>
</p>
//最终的显示为123456
<p>
  123
  <span>456</span>
</p>
p.innerHTML,最终显示:
123
 <span>456</span>

document对象常用的方法:

document.open();
document.write("hello");
document.write("world");
document.close();
  1. 如果页面已经渲染完成再调用write方法,它会先调用open方法,擦除当前文档所有内容,然后再写入。
  2. 如果在页面渲染过程中调用write方法,并不会调用open方法。
  3. 需要注意的是,虽然调用close方法之后,无法再用write方法写入内容,但这时当前页面的其他DOM节点还是会继续加载。
  4. 除了某些特殊情况,应该尽量避免使用document.write这个方法
  1. 除了document对象,在DOM中最常用的就是Element对象了,Element对象表示HTML元素。
  2. Element 对象可以拥有类型为元素节点、文本节点、注释节点的子节点,DOM提供了一系列的方法可以进行元素的增、删、改、查操作
  3. Element有几个重要属性

查询元素

document.querySelector('#ct');
docyument.querySelector('#ct a');

querySelector方法无法选中CSS伪元素。

创建元素

var newDiv = document.createElement("div");
var newContent = document.createTextNode("Hello");
var docFragment = document.createDocumentFragment();
//没有参数

DocumentFragment对象是一个存在于内存的DOM片段,但是不属于当前文档,常常用来生成较复杂的DOM结构,然后插入当前文档。这样做的好处在于,因为DocumentFragment不属于当前文档,对它的任何改动,都不会引发网页的重新渲染,比直接修改当前文档的DOM有更好的性能表现。

修改元素

var newDiv = document.createElement("div");
var newContent = document.createTextNode("Hello");
newDiv.appendChild(newContent);
var newDiv = document.createElement("div");
var newContent = document.createTextNode("Hello");
newDiv.insertBefore(newContent, newDiv.firstChild);

删除元素

属性操作

var node = document.getElementById("div1");
node.setAttribute("my_attrib", "newVal");
等同于
var node = document.getElementById("div1");
var a = document.createAttribute("my_attrib");
a.value = "newVal";
node.setAttributeNode(a);

classList()

示例:

TIM图片20190219145510.png
上一篇 下一篇

猜你喜欢

热点阅读