[javascript权威指南][阅读笔记]脚本化文档

第十五章   脚本化文档


  1. 如何在文档中查询或选取单独的元素
  2. 如何将文档作为节点树来遍历,如何找到任何文档元素的祖先、兄弟和后代元素
  3. 如何查询和设置文档元素的属性
  4. 如何查询、设置和修改文档内容
  5. 如何通过创建、插入和删除节点来修改文档结构
  6. 如何于HTML表单一起工作
选取文档元素
  1. 用指定的id属性
  2. 用指定的name属性  document.getElementsByName()
  3. 用指定的标签名字
  4. 用指定的css类
  5. 匹配指定的css选择器   document.querySelectorAll()
TIP1:不能直接在NodeList和HTML集合上直接调用数组方法,但可以间接调用。eg. Array.prototype.map.call(NodeList, function(){});
TIP2:NodeList和HTMLCollection对象是实时动态的,当文档结构发生变化,它们也会改变。
TIP3:querySelectorAll()和Sizzel。

文档结构和遍历
  1. parentNode
  2. childNodes
  3. firstChild   lastChild
  4. nextSibling   previousSibling
  5. nodeType
  6. nodeValue
  7. nodeName
作为元素树的文档
  1. children
  2. firstElementChild   lastElementChild
  3. nextElementSibling   previousElementSibling
  4. childElementCount
自定义Element的方法
  • Element和HTMLDocument等类型都像String和Array一样是类。他们不是构造函数,但他们有原型对象,可以用自定义方法扩展它

属性
  1. HTML属性作为Element属性
  2. 通过getAttribute()和setAttribute()方法,hasAttribute()和removeAttribute()
数据集属性
  • data-x
作为Attr节点但属性

元素的内容
  • 作为HTML的元素内容:innerHTML、outerHTML
  • 作为纯文本的元素内容:textContent/innerText
  • script元素中的文本
  • 作为Text节点的元素内容:nodeValue
创建、插入和删除节点
  • 创建:createElement()
  • 插入:insertBefore()和appendChild()
  • TIP1:插入一个文档中已存在的节点,则节点从原位置删除,插入新位置,不需要显式删除节点
  • 删除和替换节点:removeChild()和replaceChild()
  • DocumentFragment:createDocumentFragment()。它不存在于文档中,父节点为null,可以拥有子节点,插入时将所有节点视为一个节点一起插入
文档和元素的几何形状和滚动
  • 文档坐标和视口坐标
  • 滚动条的位置:[window.]pageXOffset/[window.]pageYOffset,[window.document.documentElement.]([window.document.body.])scrollLeft/[window.document.documentElement.]([window.document.body.])scrollTop
  • 当前窗口的大小:[window.]innerWidth/[window.]innerHeight,[window.document.documentElement.]([window.document.body.])clientWidht/[window.document.documentElement.]([window.document.body.])clientHeight
  • 查询元素的几何尺寸:视口坐标(块状元素) getBoundingClientRect()  (内联元素)getClientRect()
  • 上面方法不能得到外边距的信息,可以得到 left,top,width,height,right,bottom
  • 滚动:window.scrollTo(x, y)   [window.scrollIntoView()]
  • 关于元素尺寸、位置和溢出的更多信息
  • 尺寸:offsetWidth,offsetHeight 不包括外边距,offsetLeft,offsetTop,
  • TIP1:对于已定位元素的后代元素和一些其他元素(如表格元素),上面方法获得的值是相对于父元素的定位,offsetParent属性指定这些属性所相对的父元素,若为null,则为相对文档定位
  • TIP2:每个HTML元素都有这些属性 [offset/client/scroll][Left/Top/Width/Height],offsetParent,因为HTML元素的内容可能比盒子大,造成溢出,拥有滚动条
HTML表单

其他文档特性
  • Document的属性
  • document.write()方法:只有在解析文档时才能调用write()方法输出HTML到当前位置。即能够在<script>标签顶层代码中调用,因为它们是文档解析流程到一部分。将其放入函数中,在事件处理程序中调用,它会擦出当前文档及脚本
  • 查询选取的文本
    function getSelectedText() {
        if(window.getSelection)
            return window.getSelection().toString();
        else if(document.selection) 
            return document.selection.createRange().text;
    }
    标准的window.getSelection()返回一个Selection对象,后者描述了当前选取的一系列一个或多个Range对象。toString()是Selection对象中最重要的广泛的实现,返回选取的纯文本内容
  • 可编辑的内容?

  • 查询选取的文本
    function getSelectedText() {
        if(window.getSelection)
            return window.getSelection().toString();
        else if(document.selection) 
            return document.selection.createRange().text;
    }
    标准的window.getSelection()返回一个Selection对象,后者描述了当前选取的一系列一个或多个Range对象。toString()是Selection对象中最重要的广泛的实现,返回选取的纯文本内容
  • 可编辑的内容?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值