js基础之DOM中元素对象的属性方法详解


Posted in Javascript onOctober 28, 2016

在 HTML DOM (文档对象模型)中,每个部分都是节点。

节点是DOM结构中最基本的组成单元,每一个HTML标签都是DOM结构的节点。

文档是一个    文档节点 。

所有的HTML元素都是    元素节点

所有 HTML 属性都是    属性节点

文本插入到 HTML 元素是    文本节点

注释是    注释节点。

最基本的节点类型是Node类型,其他所有类型都继承自Node,DOM操作往往是js中开销最大的部分,因而NodeList导致的问题最多。要注意:NodeList是‘动态的',也就是说,每次访问NodeList对象,都会运行一次查询,虽然这样增加了开销,但可以保证我们新添加的节点都能在NodeList中访问的到。

所有的元素节点都有共用的属性和方法,让我们来详细看一看:

先来看较为常用的 通用 属性

1  element.id       设置或返回元素的 id。

2  element.innerHTML   设置或者返回元素的内容,可包含节点中的子标签以及内容

3  element.innerText  设置或者返回元素的内容,不包含节点中的子标签以及内容

4  element.className   设置或者 返回元素的类名

5  element.nodeName    返回该节点的大写字母标签名

6  element.nodeType   返回该结点的节点类型,1表示元素节点  2表示属性节点……

7  element.nodeValue  返回该节点的value值,元素节点的该值为null

8  element.childNodes  返回元素的子节点的nodeslist对象,nodelist类似于数组,有length属性,可以使用方括号 [index] 访问指定索引的值(也可

以使用item(index)方法)。但nodelist并不是数组。

9  element.firstChild/element.lastChild  返回元素的第一个/最后一个子节点(包含注释节点和文本节点)

10  element.parentNode  返回该结点的父节点

11  element.previousSibling  返回与当前节点同级的上一个节点(包含注释节点和文本节点)

12  element.nextSibling   返回与当前节点同级的下一个节点(包含注释节点和文本节点)

13  element.chileElementCount :  返回子元素(不包括文本节点以及注释节点)的个数

14  element.firstElementChild /lastElementChild 返回第一个/最后一个子元素(不包括文本节点以及注释节点)

15  element.previousElementSibling/nextElementSibling  返回前一个/后一个兄弟元素(不包括文本节点以及注释节点)

16  element.clientHeight/clientWidth  返回内容的可视高度/宽度(不包括边框,边距或滚动条)

17  element.offsetHeight/offsetWidth /offsetLeft/offset/Top 返回元素的高度/宽度/相对于父元素的左偏移/右偏移(包括边框和填充,不包括边距)

18  element.style  设置或返回元素的样式属性,。示例:element.style.backgroundColor  注意,与CSS不同,style的属性要去掉横杠,第二个单词

首字母要大写

19  element.tagName  返回元素的标签名(大写)

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
    .form_style{
      color: #5b5b5b;
      font-size: large;
      border: 5px solid rebeccapurple;
      background-color: antiquewhite;
      width: 440px;
      height: 120px;
      position: relative;
      left: 20px;
      top:20px;
      margin:10px;
    }
    p {
      color: #5b5b5b;
      font-size: larger;
      text-indent: 40px;
    }
  </style>

</head>


<body>
  <form id='first_form' class="form_style" name="cangjingge" >
    请选择功法:<br/>
    <input type="radio" name="gongfa" value="jysg">九阳神功<br/>
    <input type="radio" name="gongfa" value="qkdny">乾坤大挪移<br/>
    <input type="radio" name="gongfa" value="khbd">葵花宝典<br/>
    <input type="radio" name="gongfa" value="xxdf">吸星大法<br/>
  </form>
  <p>少侠请三思!!!</p><!--注释标签-->
  <p>推荐功法-->葵花宝典</p>

  <script>
    //js演示代码请添加至此
    var a=document.getElementById('first_form'),
      b = document.getElementsByTagName('p')[0];

    console.log(a.id);
    console.log(a.innerHTML);
    console.log(a.className);
    console.log(a.childNodes);
    console.log(a.firstChild);
    console.log(a.lastChild);
    console.log(a.nodeName);
    console.log(a.nodeType);
    console.log(a.nodeValue);
    console.log(a.parentNode);
    console.log(a.clientHeight);
    console.log(a.offsetHeight);
    console.log(b.nextSibling);
    console.log(b.nextElementSibling);

  </script>

</body>


</html>

浏览器显示结果:

js基础之DOM中元素对象的属性方法详解

还有某些专属属性

专属属性指那些专属于某种标签的属性。比如 <a> 标签,有href和target属性。<img> 有src属性; <form>有entype以及action属性……

a_element.href  返回当前节点指向的超链接

再来看看较为常用的通用方法:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
    .form_style{
      color: #5b5b5b;
      font-size: large;
    }
    p {
      color: #5b5b5b;
      font-size: larger;
    }
  </style>

</head>


<body>
  <form id='first_form' class="form_style" name="cangjingge" >
    请选择功法:<br/>
    <input type="radio" name="gongfa" value="jysg">九阳神功<br/>
    <input type="radio" name="gongfa" value="qkdny">乾坤大挪移<br/>
    <input type="radio" name="gongfa" value="khbd">葵花宝典<br/>
    <input type="radio" name="gongfa" value="xxdf">吸星大法<br/>
  </form>
  <p>少侠请三思!!!</p>

  <script>
    //js演示代码请添加至此
    
  </script>

</body>


</html>

(以下所有js演示代码都是以本文档中的 示例html代码 为实验对象)

element.appendChild(nodeName)   向元素添加新的子节点,作为最后一个子节点,并返回该子节点。如需向 HTML DOM 添加新元素,您首先必须创建该元素,然后把它追加到已有的元素上。

js演示代码:

var a=document.getElementById('first_form');   
var textnode=document.createTextNode("慎重选择");  
a.appendChild(textnode)

element.getAttribute(para)   返回元素节点的指定属性值。

js演示代码:

var a=document.getElementById('first_form');
console.log(a.getAttribute('name'))      //控制台输出name的值

element.getAttributeNode(para)   返回指定的属性节点。

js演示代码:

var a=document.getElementById('first_form');
console.log(a.getAttributeNode('name'))      //控制台输出name属性节点

element.getElementsByTagName(para) 返回拥有指定标签名的所有子元素的集合。

js演示代码:

var a=document.getElementById('first_form');
console.log(a.getElementsByTagName('input'))      //控制台输出

element.hasAttribute(para)  如果元素拥有指定属性,则返回true,否则返回 false。

js演示代码:

var a=document.getElementById('first_form');
console.log(a.hasAttribute('name'))      //控制台输出

element.insertBefore(insertNode,appointedNode)  在指定的已有的子节点之前插入新节点。

js演示代码:

var a=document.getElementById('first_form');
    var inputList=document.getElementsByTagName('input');
    var newNode=document.createElement('input');
    var newNode2=document.createTextNode('天马流星拳');
    var br=document.createElement('br');
    newNode.type='radio';
    newNode.name='gongfa';
    newNode.value='tmlxq';
    a.insertBefore(newNode,inputList[2]);
    a.insertBefore(newNode2,inputList[3]);
    a.insertBefore(br,inputList[3]);

element.removeAttribute() 从元素中移除指定属性。

js示例代码:

var a=document.getElementById('first_form');
a.removeAttribute('name');
console.log(a.hasAttribute('name'))

element.removeChild()   从元素中移除子节点。移除的节点虽然不在文档树中了,但其实还在内存中,可以随时被引用。

js示例代码:

var a=document.getElementById('first_form');
    a.removeChild(a.childNodes[3]);

element.replaceChild(newNode,replaceNode)  把指定节点替换为新节点。

10  element.setAttribute(attrName,attrValue)  把指定属性设置或更改为指定值。

js示例代码:

var a=document.getElementById('first_form');
    a.setAttribute('name','shaolinsi');
    console.log(a.name)

11  element.setAttributeNode()    修改指定属性节点

js示例代码:

var a=document.getElementById('first_form');
    var attr = document.createAttribute('id');
    attr.value='the_first';
    a.setAttributeNode(attr);

 console.log(a.id)

12  nodelist.item() 返回 NodeList 中位于指定下标的节点。

js示例代码:

var a=document.getElementsByTagName('input')
console.log(a.item(2))

以上就是小编为大家带来的js基础之DOM中元素对象的属性方法详解全部内容了,希望大家多多支持三水点靠木~

Javascript 相关文章推荐
基于jQuery的前端数据通用验证库
Aug 08 Javascript
web css实现整站样式互相切换
Oct 29 Javascript
jquery datatable后台封装数据示例代码
Aug 07 Javascript
Backbone.js的Hello World程序实例
Jun 19 Javascript
javascript中 try catch用法
Aug 16 Javascript
Bootstrap+jfinal退出系统弹出确认框的实现方法
May 30 Javascript
根据Bootstrap Paginator改写的js分页插件
Dec 25 Javascript
js中常用的Math方法总结
Jan 12 Javascript
微信小程序 本地数据读取实例
Apr 27 Javascript
原生JS控制多个滚动条同步跟随滚动效果
Dec 22 Javascript
详解JavaScript 为什么要有 Symbol 类型?
Apr 03 Javascript
JavaScript中的函数申明、函数表达式、箭头函数
Dec 06 Javascript
JavaScript中访问id对象 属性的方式访问属性(实例代码)
Oct 28 #Javascript
JavaScript 轮播图和自定义滚动条配合鼠标滚轮分享代码贴
Oct 28 #Javascript
微信小程序 loading(加载中提示框)实例
Oct 28 #Javascript
使用json来定义函数,在里面可以定义多个函数的实现方法
Oct 28 #Javascript
JS函数修改html的元素内容,及修改属性内容的方法
Oct 28 #Javascript
angularjs 表单密码验证自定义指令实现代码
Oct 27 #Javascript
getElementById().innerHTML与getElementById().value的区别
Oct 27 #Javascript
You might like
php标签云的实现代码
2012/10/10 PHP
JavaScript中的new的使用方法与注意事项
2007/05/16 Javascript
基于jquery的地址栏射击游戏代码
2011/03/10 Javascript
jquery remove方法应用详解
2012/11/22 Javascript
禁止你的左键复制实用技巧
2013/01/04 Javascript
jquery简单实现滚动条下拉DIV固定在头部不动
2013/11/25 Javascript
jquery等待效果示例
2014/05/01 Javascript
jQuery 如何先创建、再修改、后添加DOM元素
2014/05/20 Javascript
浅谈jQuery中 wrap() wrapAll() 与 wrapInner()的差异
2014/11/12 Javascript
javascript+HTML5的canvas实现七夕情人节3D玫瑰花效果代码
2015/08/04 Javascript
jQuery UI设置固定日期选择特效代码分享
2015/08/27 Javascript
浅谈JavaScript变量的自动转换和语句
2016/06/12 Javascript
jQuery中table数据的值拷贝和拆分
2017/03/19 Javascript
Node.js 异步异常的处理与domain模块解析
2017/05/10 Javascript
使用jQuery实现购物车结算功能
2017/08/15 jQuery
基于JavaScript 性能优化技巧心得(分享)
2017/12/11 Javascript
解决Angular.js中使用Swiper插件不能滑动的问题
2018/02/26 Javascript
如何从零开始利用js手写一个Promise库详解
2018/04/19 Javascript
浅谈JavaScript 声明提升
2020/09/14 Javascript
[01:32]DOTA2 2015国际邀请赛中国区预选赛第四日战报
2015/05/29 DOTA
python实现下载指定网址所有图片的方法
2015/08/08 Python
Python实现Smtplib发送带有各种附件的邮件实例
2017/06/05 Python
关于python的list相关知识(推荐)
2017/08/30 Python
Python3处理HTTP请求的实例
2018/05/10 Python
Django实现web端tailf日志文件功能及实例详解
2019/07/28 Python
Python简单实现词云图代码及步骤解析
2020/06/04 Python
用python-webdriver实现自动填表的示例代码
2021/01/13 Python
大学生毕业的自我鉴定
2013/11/13 职场文书
会计出纳岗位职责
2013/12/25 职场文书
校园摄影活动策划方案
2014/02/05 职场文书
房屋买卖委托公证书
2014/04/08 职场文书
湖南省党的群众路线教育实践活动总结会议新闻稿
2014/10/21 职场文书
2014离婚协议书范文(3篇)
2014/11/29 职场文书
委托书英文
2015/01/28 职场文书
想创业成功,需要掌握这些要点
2019/12/06 职场文书
JavaWeb 入门篇(3)ServletContext 详解 具体应用
2021/07/16 Java/Android