欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    (7.1)--01_DOM基础为什么会衰败?.pdf

    • 资源ID:67730141       资源大小:6.29MB        全文页数:140页
    • 资源格式: PDF        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    (7.1)--01_DOM基础为什么会衰败?.pdf

    双击此处编辑标题饶晓宇DOM基础认识DOM01了解下DOM的基本概念常DOM接02认识下 DOM的常接,常属性和常法操作DOM03结合些简单的例学习如何操作 DOM01 认识DOM1)DOM是什么2)DOM和 BOM3)DOM的基本概念DOM是什么DOM是什么Document Object Model(档对象模型)DOM是什么Document Object Model(档对象模型)允许程序或脚本语(例如:JavaScript)来操作HTML/XML 档的接DOM的诞DOM的诞上世纪 90 年代末的浏览器战DOM的诞上世纪 90 年代末的浏览器战DOM的诞上世纪 90 年代末的浏览器战W3C推出 DOM标准DOM的诞上世纪 90 年代末的浏览器战W3C推出 DOM标准最新版本是 DOM level4DOM和BOMDOM和BOMBrowser Object Model(浏览器对象模型)DOM和BOMBrowser Object Model(浏览器对象模型)BOM没有统的标准,但是 window 的些对象有对应的标准DOM和BOMBrowser Object Model(浏览器对象模型)BOM没有统的标准,但是 window 的些对象有对应的标准DOM标准 HTML标准-navigatorHTML标准-locationHTML标准-historyHRTime标准CSSOMView Model 草案Performance Timeline标准Resource Timing标准User Timing标准DOM的基本概念DOM的基本概念档树DOM的基本概念档树节点 NodeDOM的基本概念档树节点 Node元素 ElementHTMLElementHTMLDivElementHTMLAnchorElementSVGElementDOM的基本概念根节点和根元素每棵档树只会有个根节点和个根元素根节点不定是根元素DOM的基本概念根节点和根元素每棵档树只会有个根节点和个根元素根节点不定是根元素根元素 Root ElementDOM的基本概念根节点和根元素每棵档树只会有个根节点和个根元素根节点不定是根元素根节点 Root Node根元素 Root Element获取根节点和根元素获取根节点和根元素?获取根节点?法1function getRootNode(node)while(node.parentNode)node=node.parentNode;return node;?法2 Node.getRootNode();获取根节点和根元素?获取根节点?法1function getRootNode(node)while(node.parentNode)node=node.parentNode;return node;?法2 Node.getRootNode();?获取根元素function getRootElement(node)while(node.parentElement)node=node.parentElement;?确保 node 是元素类型 if(node.nodeType?Node.ELEMENT_NODE)return node;return null;获取 DocumentHTML、Window获取 DocumentHTML、Window?获取 document node.ownerDocument;?document?null?获取 html 元素document.documentElement;?document.rootElement;(已废弃)?获取 window 对象document.defaultView;?window?nulldocument.parentWindow;?非标准,IE only获取 DocumentHTML、Window?获取 document node.ownerDocument;?document?null?获取 html 元素document.documentElement;?document.rootElement;(已废弃)?获取 window 对象document.defaultView;?window?nulldocument.parentWindow;?非标准,IE only思考题:node.ownerDocument 和直接访问document 对象有什么不同?02 常DOM接1)节点 Node2)元素 Element3)事件 Event节点 Node节点 Node节点的常属性节点 Node节点的常属性节点 Node节点 Node节点的常法节点 Node节点的常法节点 Node常节点类型节点 Node常节点类型元素 Element元素 ElementElement继承Node接 元素 ElementElement继承Node接 Element的常属性元素 ElementElement继承Node接 Element的常属性元素 Element元素 Element元素常法元素 Element元素常法HTMLElementHTMLElementHTMLElement继承Element 接HTMLElementHTMLElement继承Element 接HTMLElement的常属性HTMLElementHTMLElement继承Element 接HTMLElement的常属性EventEventEvent 的常属性EventEvent 的常属性EventEventEvent 的常法EventEvent 的常法03 操作DOM1)DOM的获取和创建2)DOM的修改3)事件监听DOM的获取DOM的获取?根据 id 获取document.getElementById(main);DOM的获取?根据 id 获取document.getElementById(main);?根据 className 获取document.getElementsByClassName(list);DOM的获取?根据 id 获取document.getElementById(main);?根据 className 获取document.getElementsByClassName(list);?根据 tagName 获取document.getElementsByTagName(li);DOM的获取?根据 id 获取document.getElementById(main);?根据 className 获取document.getElementsByClassName(list);?根据 tagName 获取document.getElementsByTagName(li);?根据 name 获取document.getElementsByName(btn01);DOM的获取?根据 id 获取document.getElementById(main);?根据 className 获取document.getElementsByClassName(list);?根据 tagName 获取document.getElementsByTagName(li);?根据 name 获取document.getElementsByName(btn01);DOM的获取?根据 id 获取document.getElementById(main);?根据 className 获取document.getElementsByClassName(list);?根据 tagName 获取document.getElementsByTagName(li);?根据 name 获取document.getElementsByName(btn01);成功 返回标元素失败 返回nullDOM的获取?根据 id 获取document.getElementById(main);?根据 className 获取document.getElementsByClassName(list);?根据 tagName 获取document.getElementsByTagName(li);?根据 name 获取document.getElementsByName(btn01);成功 返回标元素失败 返回null成功 返回 HTMLCollection失败 返回空的 HTMLCollectionDOM的获取?根据 id 获取document.getElementById(main);?根据 className 获取document.getElementsByClassName(list);?根据 tagName 获取document.getElementsByTagName(li);?根据 name 获取document.getElementsByName(btn01);成功 返回标元素失败 返回null成功 返回 HTMLCollection失败 返回空的 HTMLCollection成功 返回 HTMLCollection失败 返回空的 HTMLCollectionDOM的获取?根据 id 获取document.getElementById(main);?根据 className 获取document.getElementsByClassName(list);?根据 tagName 获取document.getElementsByTagName(li);?根据 name 获取document.getElementsByName(btn01);成功 返回标元素失败 返回null成功 返回 HTMLCollection失败 返回空的 HTMLCollection成功 返回 HTMLCollection失败 返回空的 HTMLCollection成功 返回动态NodeList失败 返回空的动态 NodeList通过CSS选择器获取通过CSS选择器获取?根据 id 选择器获取document.querySelector(#main);通过CSS选择器获取?根据 id 选择器获取document.querySelector(#main);?根据类选择器获取document.querySelectorAll(.list);通过CSS选择器获取?根据 id 选择器获取document.querySelector(#main);?根据类选择器获取document.querySelectorAll(.list);?根据标签选择器获取document.querySelectorAll(li);通过CSS选择器获取?根据 id 选择器获取document.querySelector(#main);?根据类选择器获取document.querySelectorAll(.list);?根据标签选择器获取document.querySelectorAll(li);?根据属性选择器获取document.querySelectorAll(name=btn01);通过CSS选择器获取?根据 id 选择器获取document.querySelector(#main);?根据类选择器获取document.querySelectorAll(.list);?根据标签选择器获取document.querySelectorAll(li);?根据属性选择器获取document.querySelectorAll(name=btn01);?根据复杂的 CSS 选择器获取document.querySelectorAll(#main .list li:nth?child(n+5)buttonname?btn);DOM 的获取document.querySelector(CSS Selector);document.querySelectorAll(CSS Selector);DOM 的获取document.querySelector(CSS Selector);document.querySelectorAll(CSS Selector);成功 第个命中选择器的元素失败 返回nullDOM 的获取document.querySelector(CSS Selector);document.querySelectorAll(CSS Selector);成功 第个命中选择器的元素失败 返回null成功 返回静态NodeList列表失败 返回空的静态 NodeListHTMLCollection vs NodeListHTMLCollection vs NodeList都是类数组,提供了 length属性和通过下标索引的功能,可以通过 Array.from等式转为数组HTMLCollection vs NodeList都是类数组,提供了 length属性和通过下标索引的功能,可以通过 Array.from等式转为数组HTMLCollection和动态 NodeList 的结果是实时更新的,静态 NodeList不实时更新HTMLCollection vs NodeList都是类数组,提供了 length属性和通过下标索引的功能,可以通过 Array.from等式转为数组HTMLCollection和动态 NodeList 的结果是实时更新的,静态 NodeList不实时更新HTMLCollection可以通过下标、id、name进索引,NodeList只能通过下标进索引HTMLCollection vs NodeList都是类数组,提供了 length属性和通过下标索引的功能,可以通过 Array.from等式转为数组HTMLCollection和动态 NodeList 的结果是实时更新的,静态 NodeList不实时更新HTMLCollection可以通过下标、id、name进索引,NodeList只能通过下标进索引ES5、ES6之后,NodeList提供了迭代的法,HTMLCollection没有HTMLCollection vs NodeListHTMLCollection vs NodeList?HTMLCollectionlet btns1=document.getElementsByTagName(button);document.getElementsByTagName(button)?document.getElementsByTagName(button);?trueHTMLCollection vs NodeList?HTMLCollectionlet btns1=document.getElementsByTagName(button);document.getElementsByTagName(button)?document.getElementsByTagName(button);?true?动态 NodeListlet btns2=document.getElementsByName(btn);document.getElementsByName(btn)?document.getElementsByName(btn);?trueHTMLCollection vs NodeList?HTMLCollectionlet btns1=document.getElementsByTagName(button);document.getElementsByTagName(button)?document.getElementsByTagName(button);?true?动态 NodeListlet btns2=document.getElementsByName(btn);document.getElementsByName(btn)?document.getElementsByName(btn);?true?静态 NodeListlet btns3=document.querySelectorAll(button);document.querySelectorAll(button)?document.querySelectorAll(button);?false获取节点let p=document.getElementById(p);获取节点let p=document.getElementById(p);?获取第个节点 p.f?rstChild;获取节点let p=document.getElementById(p);?获取第个节点 p.f?rstChild;?获取最后个节点 p.lastChild;获取节点let p=document.getElementById(p);?获取第个节点 p.f?rstChild;?获取最后个节点 p.lastChild;?获取全部节点 p.childNodes;获取节点let p=document.getElementById(p);let div=document.querySelector(div);?获取第个节点 p.f?rstChild;?获取最后个节点 p.lastChild;?获取全部节点 p.childNodes;获取节点let p=document.getElementById(p);let div=document.querySelector(div);?获取第个节点 p.f?rstChild;?获取第个元素 div.f?rstElementChild;?获取最后个节点 p.lastChild;?获取全部节点 p.childNodes;获取节点let p=document.getElementById(p);let div=document.querySelector(div);?获取第个节点 p.f?rstChild;?获取第个元素 div.f?rstElementChild;?获取最后个节点 p.lastChild;?获取全部节点 p.childNodes;?获取最后个元素 p.lastElementChild;获取节点let p=document.getElementById(p);let div=document.querySelector(div);?获取第个节点 p.f?rstChild;?获取第个元素 div.f?rstElementChild;?获取最后个节点 p.lastChild;?获取全部节点 p.childNodes;?获取全部元素 p.children;?获取最后个元素 p.lastElementChild;获取节点获取节点let ul=document.querySelector(ul);获取节点let ul=document.querySelector(ul);?获取元素 ul.parentElement;获取节点let ul=document.querySelector(ul);let html=document.documentElement;?获取元素 ul.parentElement;获取节点let ul=document.querySelector(ul);let html=document.documentElement;?获取元素 ul.parentElement;?获取节点 html.parentNode;?document获取节点获取兄弟节点let btn3=document.getElementById(btn3);获取兄弟节点let btn3=document.getElementById(btn3);?获取前个兄弟节点 btn3.previousSibling;获取兄弟节点let btn3=document.getElementById(btn3);?获取前个兄弟节点 btn3.previousSibling;?获取前个兄弟元素 btn3.previousElementSibling;获取兄弟节点let btn3=document.getElementById(btn3);?获取前个兄弟节点 btn3.previousSibling;?获取后个兄弟节点 btn3.nextSibling;?获取前个兄弟元素 btn3.previousElementSibling;获取兄弟节点let btn3=document.getElementById(btn3);?获取前个兄弟节点 btn3.previousSibling;?获取后个兄弟节点 btn3.nextSibling;?获取前个兄弟元素 btn3.previousElementSibling;?获取后个兄弟元素 btn3.nextElementSibling;获取兄弟节点创建节点并插DOM创建节点并插DOMlet a=document.createElement(a);创建节点创建节点并插DOMlet a=document.createElement(a);a.textContent=link to ;创建节点设置本创建节点并插DOMlet a=document.createElement(a);a.textContent=link to ;a.href=https:?;?property 式 a.setAttribte(target,_blank);?attribute 式创建节点设置本设置属性创建节点并插DOMlet a=document.createElement(a);a.textContent=link to ;a.href=https:?;?property 式 a.setAttribte(target,_blank);?attribute 式a.style.cssText=color:red;?cssText 式 a.style.fontSize=40px;?属性式创建节点设置本设置属性设置样式创建节点并插DOMlet a=document.createElement(a);a.textContent=link to ;a.href=https:?;?property 式 a.setAttribte(target,_blank);?attribute 式a.style.cssText=color:red;?cssText 式 a.style.fontSize=40px;?属性式document.body.appendChild(a);创建节点设置本设置属性设置样式插 DOM批量插节点批量插节点?批量插入 DOMfor(let i=0;i 10;i?)let p=document.createElement(p);p.textContent=这是第$i+1 个;?执了10次,DOM重绘了10次 document.body.appendChild(p);批量插节点?批量插入 DOMfor(let i=0;i 10;i?)let p=document.createElement(p);p.textContent=这是第$i+1 个;?执了10次,DOM重绘了10次 document.body.appendChild(p);?利 DocumentFragmentlet frag=document.createDocumentFragment();for(let i=0;i 10;i?)let p=document.createElement(p);p.textContent=这是第$i+1 个;?没有实际插入 DOM,不触发重绘 frag.appendChild(p);?只插入次 DOM,触发次重绘document.body.appendChild(frag);?fragment 本并不会被插入 DOMconsole.log(frag.parentNode);?null?只会将节点全部插入DOM,并将 fragment 清空console.log(frag.children);?HTMLCollenction 批量插节点批量插节点?利 ParentNode.append()法(IE 不持)let arr=;for(let i=0;i 10;i?)let p=document.createElement(p);p.textContent=这是第$i+1 个;arr.push(p);document.body.append(?arr);?document.body.append.apply(document.body,arr);批量插节点?利 ParentNode.append()法(IE 不持)let arr=;for(let i=0;i 10;i?)let p=document.createElement(p);p.textContent=这是第$i+1 个;arr.push(p);document.body.append(?arr);?document.body.append.apply(document.body,arr);?ParentNode.append()还可以插入本信息let p=document.createElement(p);p.textContent=这是个段落;document.body.append(这是段落前的本,p,这是段落后的本);插到指定节点之前插到指定节点之前let p=document.getElementById(p);let text=document.createTextNode(这是段本);document.body.insertBefore(text,p);替换已有的节点替换已有的节点let p=document.getElementById(p);let text=document.createTextNode(这是段本);document.body.replaceChild(text,p);移除节点移除节点let p=document.getElementById(p);p.parentNode.removeChild(p);属性相关的其它操作属性相关的其它操作let p=document.getElementById(p);?属性判断console.log(p.hasAttribute(title);?falseconsole.log(p.hasAttribute(id);?true?属性获取console.log(p.getAttribute(title);?nullconsole.log(p.getAttribute(id);?p?属性移除 p.removeAttribute(id);事件的监听事件的监听let btn=document.getElementById(btn1);?写法1 btn.addEventListener(click,function(ev)console.log(点击位置:$ev.pageX,$ev.pageY),false?是否在捕获阶段触发);?写法2 btn.addEventListener(click,function(ev)console.log(点击位置:$ev.pageX,$ev.pageY),passive:false,?是否允许 ev.preventDefault()取消事件 capture:false,?是否在捕获阶段触发 once:false,?是否只触发次);事件的解除事件的解除let btn=document.getElementById(btn1);function handler(ev)console.log(点击位置:$ev.pageX,$ev.pageY)?事件绑定 btn.addEventListener(click,handler,false);?事件解除 btn.removeEventListener(click,handler,false);事件的解除let btn=document.getElementById(btn1);function handler(ev)console.log(点击位置:$ev.pageX,$ev.pageY)?事件绑定 btn.addEventListener(click,handler,false);?事件解除 btn.removeEventListener(click,handler,false);?注意1:解除事件的函数必须和绑定时指向同个 btn.removeEventListener(click,function handler(ev)console.log(点击位置:$ev.pageX,$ev.pageY),false);?解除失败事件的解除let btn=document.getElementById(btn1);function handler(ev)console.log(点击位置:$ev.pageX,$ev.pageY)?事件绑定 btn.addEventListener(click,handler,false);?事件解除 btn.removeEventListener(click,handler,false);?注意1:解除事件的函数必须和绑定时指向同个 btn.removeEventListener(click,function handler(ev)console.log(点击位置:$ev.pageX,$ev.pageY),false);?解除失败?注意2:尽可能地保证解除事件时第三个参数与绑定时相同 btn.removeEventListener(click,handler,true);?解除失败DOM事件的阶段DOM事件的阶段DOM事件分为三个阶段:捕获阶段标阶段冒泡阶段DOM事件的阶段DOM事件分为三个阶段:捕获阶段标阶段冒泡阶段事件代理事件代理利事件冒泡的原理事件代理let num=0;document.body.addEventListener(click,function(ev)switch(ev.target.id)case btn1:num?;break;case btn2:num?;break;case btn3:num*=2;break;case div:num=0;break;console.log(num);,false);利事件冒泡的原理冒泡事件与不冒泡事件并不是所有的事件都会冒泡冒泡事件与不冒泡事件并不是所有的事件都会冒泡冒泡的事件有:clickmousedownmouseup冒泡事件与不冒泡事件并不是所有的事件都会冒泡冒泡的事件有:clickmousedownmouseup不冒泡的事件有:mouseentermouseleave练习题:了解下还有哪些事件是冒泡的,哪些是不冒泡的冒泡事件与不冒泡事件并不是所有的事件都会冒泡冒泡的事件有:clickmousedownmouseup不冒泡的事件有:mouseentermouseleave

    注意事项

    本文((7.1)--01_DOM基础为什么会衰败?.pdf)为本站会员(奉***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开