javascript中怎样区分元素和节点?

JavaScript016

javascript中怎样区分元素和节点?,第1张

元素是统称;节点是具有唯一性的;元素节点和文本节点之间存在父子关系,元素节点和属性节点之间不存在父子关系。

元素:

就是html文档里,所有的标签都可以称之为元素,比如说<p>、<tr>等,意思是说元素是个统称,一个文档里面有很多的元素。

节点:

就是js为了对html文档进行操作,而开发的,也就是DOM,文档对象模型。即每个元素都可以称之为一个节点,节点是唯一的。

文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展置标语言的标准编程接口。它是一种与平台和语言无关的应用程序接口(API),它可以动态地访问程序和脚本,更新其内容、结构和www文档的风格(目前,HTML和XML文档是通过说明部分定义的)。文档可以进一步被处理,处理的结果可以加入到当前的页面。DOM是一种基于树的API文档,它要求在处理过程中整个文档都表示在存储器中。另外一种简单的API是基于事件的SAX,它可以用于处理很大的XML文档,由于大,所以不适合全部放在存储器中处理。

1、JavaScript原生函数没有提供判断DOM节点是否存在方法,我们通常获取DOM节点几乎都是document.getElement..方法,会返回一个object数组合集,我们可以通过object[0],object[1]这样来访问这个合集的每一个对象。既然返回的是数组合集,那么就有length属性,而length大于等于1即表示DOM节点存在页面中

代码:

Object.prototype.exist = function(){

if(typeof this !='undefined' &&this.length>=1){

return true

}

return false

}

使用:

假设页面有如下节点

<div>这里是DIV节点</div>

<div>这里是DIV节点</div>

<span>这里是span节点</span>

判断节点是否在页面:

var is_exist = document.getElementsByTagName('div').exist()

alert(is_exist) // true

var is_exist = document.getElementsByTagName('span').exist()

alert(is_exist) // true

var is_exist = document.getElementsByTagName('p').exist()

alert(is_exist) // false

2、注意:如果使用是使用document.getElementById()方法获取对象的就不能使用exist()方法,因为根据ID取节点对象的方法在取不到节点的情况下会返回一个空对象,不会集成原型exist()函数,所以会报错!所以如果是根据ID取对象的可以直接if(obj)这样既可判断DOM节点是否存在页面中

jQuery判断DOM节点是否存在页面中

可以这么干

添加原型:

(function($) {

$.fn.exist = function(){

if($(this).length>=1){

return true

}

return false

}

})(jQuery)

3、使用方法:

假如页面有如下DOM节点

<div id="a">这里是id=a节点</div>

<div>这里是DIV节点</div>

<div>这里是DIV节点</div>

<span>这里是span节点</span>

判断:

alert($('#aaa').exist())// false

alert($('#a').exist())// true

alert($('div').exist())// true

alert($('p').exist())// false

以上两种方法其实都是根据对象集合的length属性判断对象是否存在。

1.节点至少拥有以下三个信息:

node Type:节点类型,元素节点类型为1,属性为2,文本为3,注释为8

node Name:节点名称

node value:节点值

2.父节点:parentNode

语法:element.ParentNode

得到的是离元素最近的父节点,如果找不到就返回null

3.子节点:ParentNode.childNodes

获得所有子节点

4.创建节点:document.create.Element()

document.createElement("元素名") 创建元素节点 

let div1 = document.createElement('div')

console.log(div1)

document.createTextNode("文本")   创建文本节点 

let divText = document.createTextNode('我是div')console.log(divText)

A.appendChild( B) 把B节点追加至A节点的末尾 

div1.appendChild(divText)

 console.log(div1)

 let body = document.querySelector('body')

 body.appendChild(div1)

父节点.insertBefore( A,B ) 把A节点插入到B节点之前 */

let gege = document.createElement('button')

let btnText = document.createTextNode('btn的哥哥')

gege.appendChild(btnText)

let didi = document.getElementById('btn1')

body.insertBefore(gege,didi)

 创建一个h1 我是h1 插入到 btn的前面 */

}