33、JavaScript 操作DOM

由于HTML文档被浏览器解析后就是一棵DOM树,要改变HTML的结构,就需要通过JavaScript来操作DOM。

 

始终记住DOM是一个树形结构。操作一个DOM节点实际上就是这么几个操作:

更新:更新该DOM节点的内容,相当于更新了该DOM节点表示的HTML的内容;

遍历:遍历该DOM节点下的子节点,以便进行进一步操作;

添加:在该DOM节点下新增一个子节点,相当于动态增加了一个HTML节点;

删除:将该节点从HTML中删除,相当于删掉了该DOM节点的内容以及它包含的所有子节点。

 

在操作一个DOM节点前,我们需要通过各种方式先拿到这个DOM节点。最常用的方法是document.getElementById()document.getElementsByTagName(),以及CSS选择器document.getElementsByClassName()

 

由于ID在HTML文档中是唯一的,所以document.getElementById()可以直接定位唯一的一个DOM节点。document.getElementsByTagName()和document.getElementsByClassName()总是返回一组DOM节点。要精确地选择DOM,可以先定位父节点,再从父节点开始选择,以缩小范围。

 

例如:

  1. // 返回ID为'test'的节点:
  2. var test = document.getElementById('test');
  3. // 先定位ID为'test-table'的节点,再返回其内部所有tr节点:
  4. var trs = document.getElementById('test-table').getElementsByTagName('tr');
  5. // 先定位ID为'test-div'的节点,再返回其内部所有class包含red的节点:
  6. var reds = document.getElementById('test-div').getElementsByClassName('red');
  7. // 获取节点test下的所有直属子节点:
  8. var cs = test.children;
  9. // 获取节点test下第一个、最后一个子节点:
  10. var first = test.firstElementChild;
  11. var last = test.lastElementChild;

 

第二种方法是使用querySelector()和querySelectorAll(),需要了解selector语法,然后使用条件来获取节点,更加方便:

  1. // 通过querySelector获取ID为q1的节点:
  2. var q1 = document.querySelector('#q1');
  3. // 通过querySelectorAll获取q1节点内的符合条件的所有节点:
  4. var ps = q1.querySelectorAll('div.highlighted > p');

注意:低版本的IE<8不支持querySelectorquerySelectorAll。IE8仅有限支持。

 

严格地讲,我们这里的DOM节点是指Element,但是DOM节点实际上是Node,在HTML中,Node包括Element、Comment、CDATA_SECTION等很多种,以及根节点Document类型,但是,绝大多数时候我们只关心Element,也就是实际控制页面结构的Node,其他类型的Node忽略即可。根节点Document已经自动绑定为全局变量document。

 

JavaScript 操作DOM

付杰
花牛苹果 甘肃天水 李宏恩家自种 1斤 包邮
花牛苹果 甘肃天水 李宏恩家自种 1斤 包邮
  • ¥ 6.8元
  • 市场价:8.8元
服务器管理面板/主机控制面板“安装”服务
服务器管理面板/主机控制面板“安装”服务
  • ¥ 9.9元
  • 市场价:49.9元
wp discux 帝国 dedecms phpcms等快速建站
wp discux 帝国 dedecms phpcms等快速建站
  • ¥ 99.9元
  • 市场价:499.9元
SEO顾问服务 中小型网站 单站/最低99.9元 全方位优化
SEO顾问服务 中小型网站 单站/最低99.9元 全方位优化
  • ¥ 99.9元
  • 市场价:5000元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: