当前位置: 首页 > news >正文

JS操作DOM的几个属性与方法

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

一.直接引用结点
1.document.getElementById(id);
--在文档里面通过id来找结点
2.document.getElementsByName(Name);
--返回一个数组,包含对这些结点的引用
--如:document.getElementsByTagName("span");将返回所有类型为span的结点

二.间接引用结点
3.element.childNodes
--返回element的所有子结点,可以用element.childNodes[i]的方式来调用
--element.firstChild=element.childNodes[0];
--element.lastChild=element.childNodes[element.childNonts.length-1];
4.element.parentNode
--引用父结点
5.element.nextSibling; //引用下一个兄弟结点
element.previousSibling; //引用上一个兄弟结点

三.获得结点信息
6.nodeName属性获得结点名称
--对于元素结点返回的是标记名称,如:<a herf><a>返回的是"a"
--对于属性结点返回的是属性名称,如:class="test" 返回的是test
--对于文本结点返回的是文本的内容
7.nodeType返回结点的类型
--元素结点返回1
--属性结点返回2
--文本结点返回3
8.nodeValue返回结点的值
--元素结点返回null
--属性结点返回undefined
--文本结点返回文本内容
9.hasChildNodes()判断是否有子结点
10.tagName属性返回元素的标记名称
--这个属性只有元素结点才有,等同于元素结点的nodeName属性

四.处理属性结点
11.每个属性结点都是元素结点的一个属性,可以通过(元素结点.属性名称)访问
12.利用setAttribute()方法给元素结点添加属性
--elementNode.setAttribute(attributeName,attributeValue);
--attributeName为属性的名称,attributeValue为属性的值
13.使用getAttribute()方法获得属性值
--elementNode.getAttribute(attributeName);

五.处理文本结点
14.innerHTML和innerText属性,值得注意的是无论是ie还是firefox都容易把空格、换行、制表符等当成文本结点。所有一般通过element.childNodes[i]引用文本结点的时候,一般要处理:
<script language"javaScript" type="text/javascript">
function cleanWhitespace(element)
{
for(var i=0; i<element.childNotes.length; i )
{
var node = element.childNodes[i];
if(node.nodeType == 3 && !/\S/.test(node.nodeValue))
{
node.parentNode.removeChild(node);
}
}
}
</script>

六.改变文档的层次结构
15.document.createElement()方法创建元素结点
--如:document.createElement("Span");
16.document.createTextNode()方法创建文本结点
--如:document.createTextNode(" "); //注:他不会通过html编码,也就是说这里创建的不是空格,而是字符串
17.使用appendChild()方法添加结点
--parentElement.appendChild(childElement);
18.使用insertBefore()方法插入子节点
--parentNode.insertBefore(newNode,referenceNode);
--newNode为插入的节点,referenceNode为将插入的节点插入到这之前
19.使用replaceChild方法取代子结点
--parentNode.replaceChild(newNode,oldNode);
--注:oldNode必须是parentNode的子结点,
20.使用cloneNode方法复制结点
--node.cloneNode(includeChildren);
--includeChildren为bool,表示是否复制其子结点
21.使用removeChild方法删除子结点
--parentNode.removeChild(childNode);

七.表格的操作
--注:ie中无法直接将一个完整的表格结点插入到文档中
22.添加行和单元格
var _table=document.createElement("table"); //创建表
table.insertRow(i); //在table的第i行插入行
row.insertCell(i); //在row的第i个位置插入单元格
23.引用单元格对象
--table.rows[i].cells[i];
24.删除行和单元格
--table.deleteRow(index);
--row.deleteCell(index);
25.交换两行获得两个单元格的位置
node1.swapNode(node2);
--这个方法在firefox中将出错

通用方法:
function swapNode(node1,node2)
{
var _parent=node1.parentNode;
var _t1=node1.nextSubling;
var _t2=node2.nextSubling;
if(_t1)parent.insertBefore(node2,_t1);
else _parent.appendChild(node2);
if(_t2)parent.insertBefore(node1,_t2);
else _parent.appendChild(node1);

转载于:https://my.oschina.net/u/1403140/blog/185436

相关文章:

  • 201771010101 白玛次仁《面向对象程序设计(Java)》第十一周学习总结
  • 【持续更新】jQuery 实用技巧
  • 学JS的心路历程-函式(五)箭头函式
  • 【转】Ruby入门教程(一)
  • 进程【TLCL】
  • 深入数据库索引背后算法及数据结构
  • 基于游标的分页接口实现
  • Docker1---安装
  • 如何利用极致业务基础平台构建一个通用企业ERP之十二收款单设计
  • 如何给esxi打补丁
  • OpenCart之信息中心(Information)模块教程
  • KbmMW 4.40.00 正式版发布
  • keepalived实现lvs高可用并负载均衡lamp
  • java调试技巧
  • 浅析微信支付:支付验收示例和验收指引
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • 230. Kth Smallest Element in a BST
  • Angular 4.x 动态创建组件
  • ESLint简单操作
  • gcc介绍及安装
  • Hibernate【inverse和cascade属性】知识要点
  • Java反射-动态类加载和重新加载
  • JS函数式编程 数组部分风格 ES6版
  • magento2项目上线注意事项
  • PAT A1120
  • Phpstorm怎样批量删除空行?
  • Redis学习笔记 - pipline(流水线、管道)
  • Vue.js 移动端适配之 vw 解决方案
  • Zsh 开发指南(第十四篇 文件读写)
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 深入浏览器事件循环的本质
  • 首页查询功能的一次实现过程
  • 我看到的前端
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • 怎样选择前端框架
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • (AngularJS)Angular 控制器之间通信初探
  • (Note)C++中的继承方式
  • (SpringBoot)第七章:SpringBoot日志文件
  • (四)图像的%2线性拉伸
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (转)ABI是什么
  • (转)EOS中账户、钱包和密钥的关系
  • (转)用.Net的File控件上传文件的解决方案
  • ./和../以及/和~之间的区别
  • .bat批处理(六):替换字符串中匹配的子串
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .Net 路由处理厉害了
  • .net 使用ajax控件后如何调用前端脚本
  • /deep/和 >>>以及 ::v-deep 三者的区别
  • @Bean, @Component, @Configuration简析
  • [100天算法】-实现 strStr()(day 52)
  • [20160902]rm -rf的惨案.txt
  • [20171101]rman to destination.txt