JS-DOM基础

1     JS-DOM

全称:document object model

1.1 获取页面元素

getElementsByTagName():无论元素的数量是多少,都会存入数组

getElementById():

getElemnetsByClassName():不推荐使用,有兼容问题。

1.2 标签的自定义属性

1)        通过在html里直接在标签中添加属性;

2)        通过JS添加属性:标签.属性=值;

3)        setAttribute(a,b)设置值为b的属性a,

4)        getAttribute(a)获取属性a,

5)        removeAttribute(a)移除属性a;

 1 <input type="text" id="t" a="haha"/>
 2
 3 <script>
 4
 5     var t=document.getElementById("t");
 6
 7     t.c="cc";
 8
 9     console.log(t.c);
10
11     console.log(t.getAttribute("c"));
12
13     console.log("\n");
14
15     console.log(t.id);
16
17     console.log(t.a);
18
19     console.log(t.getAttribute("id"));
20
21     console.log(t.getAttribute("a"));
22
23     console.log("\n");
24
25     console.log(t.setAttribute("a","bibi"));
26
27     console.log(t.setAttribute("b","lili"));
28
29     console.log(t.getAttribute("b"));
30
31 </script>

结果:

1.3 事件

1.3.1   三要素

1)        事件源(发生事件的对象)

2)        事件名称

3)        事件处理程序(要执行的内容)

如果分不清楚,那么举个栗子:小明被小刚打了,小明就进了医院。那么事件源就是小明,事件名称是:被打了,事件处理就是小明被送进了医院。

1.3.2   注册事件

行内:在对应的标签内添加:on+事件名=“要执行的内容”;

内嵌:

1)        在js标签内书写:对象.on+事件名=function(){执行内容}

2)        事件监听

注意:使用for循环给一组元素添加事件监听的时候,在事件处理里面千万不要出现for循环的计数器。原因:事件注册的时候是不会执行具体的事件处理代码的,所以执行事件时的计数器就会是最后执行的计数器值。

1.3.3   常用事件:

.onclick():点击

.onmouseover:鼠标进入

.onmousemove:鼠标移动

.onmouseout:鼠标移出

.onkeydown:键盘按下

.onkeyup:键盘抬起

1.4 获取内容

1)        对象.innerHTML:包括标签及文字内容

2)        对象.innerText:只包含文字内容,早期火狐不支持

3)        对象.textContent:只包含文字内容,早期ie不支持

1.5 节点

1.5.1   节点的组成


三种节点


nodeType


nodeName


nodeValue


标签(元素)


1


标签名


Null


属性


2


属性名


属性值


文本(内容)


3


#text


文本内容

<ul id="ul">
    <li>111</li>
    <li>222</li>123
    <li id="li">333</li>
    <li>444</li>
</ul>
 1 <script>
 2     var ul = document.getElementById("ul");
 3     var ulId=ul.getAttributeNode("id");
 4     console.log(ulId.nodeName);
 5     console.log(ulId.nodeType);
 6     console.log(ulId.nodeValue);
 7
 8     var li = document.getElementById("li");
 9     var lis = ul.childNodes;
10     for (var i=0;i<lis.length;i++) {
11         console.log(lis[i].nodeName);
12         console.log(lis[i].nodeType);
13         console.log(lis[i].nodeValue);
14     }
15 </script>

结果:

    

1.5.2   节点的获取

父节点:parentNode;

子节点:

childNodes:标准的DOM属性,获取所有,包括文本节点,IE8及以前会忽略空白文本节点

children:非标准DOM属性,只获取元素(标签)节点,所有浏览器都支持。

兄弟节点:

previousSibling:IE8及以前会忽略空白文本节点

previousElementSibling:IE8及以前不支持

nextSibling:IE8及以前会忽略空白文本节点

nextElementSibling:IE8及以前不支持

<ul id="ul">

    <li>111</li>

    <li>222</li>123

    <li id="li">333</li>123

    123<li>444</li>

</ul>
 1 <script>
 2
 3     var ul=document.getElementById("ul");
 4
 5     var li=document.getElementById("li");
 6
 7     console.log(ul.childNodes);
 8
 9     console.log(ul.children);
10
11     console.log(li.parentNode);
12
13     console.log(li.previousSibling);
14
15     console.log(li.previousElementSibling);
16
17     console.log(li.nextSibling);
18
19     console.log(li.nextElementSibling);
20
21 </script>

在chorm中的执行结果:

 

IE8中的结果:

总结:


 


Chorm,firefox


IE8及以前


.childNodes


标签节点+文本节点


标签节点+非空文本节点


.children


标签节点


标签节点


.previousSibling


标签节点||文本节点


非空文本节点||标签节点


.previousElementSibling


标签节点


Undefined


.nextSibling


标签节点||文本节点


非空文本节点||标签节点


.nextElementSibling


标签节点


Undefined

1.5.3   操作节点

.cloneNode(boolean):复制节点,true全部克隆,false只克隆当前标签节点

.appendChild():追加节点到末尾

<ul id="ul">
    <li>1111</li>
    <li>2222</li>
    <li id="li">3333</li>
    <li>4444</li>
</ul>
1 <script>
2     var ul=document.getElementById("ul");
3     var li=document.getElementById("li");
4     ul.appendChild(li.cloneNode(true));
5     ul.appendChild(li.cloneNode(false));
6     ul.appendChild(ul.cloneNode(true));
7 </script>

结果:

.removeChild():移除子节点

.insertBefore(a,b):将子元素a插入到b之前

1.6 动态 创建元素

document.write();注意:写在函数内会覆盖原来的页面元素

innerHTML注意:使用它拼接字符串效率非常低

document. createElement("标签名")

时间: 2024-08-09 06:18:35

JS-DOM基础的相关文章

JS DOM基础 操作属性、类、CSS样式

操作属性和类 一.属性节点操作 文本节点内容的获取和修改: 语法:elementNode.attributeName ( 元素节点.属性名)     也可以使用“[ ]” ( 元素节点[属性名]) 注意:一般我们操作属性节点时是不需要获取属性节点的,而是直接通过元素节点获取(/修改)属性节点的值.      特别的,有些属性名称与js关键字或者保留字冲突了,只能用另外的名字: class属性:要写成className(class是关键字). label标签的for属性:写成htmlFor. 通过

JS DOM基础 事件概述 事件流 事件处理方法 添加监听器 事件类型 事件对象 事件委托

一.事件概述 事件是什么? 在我们的生活中,都会接触到事件这样一个概念,它通常通过描述发生这件事的时间.地点.人物,发生了什么来进行概括. 同样的在javascript也有这样的一个的东西------事件. 页面上发生的事件:鼠标移动.点击.滚动等等. 事件描述了页面上发生的事情,通常它有以下三个要素组成: 事件源:触发事件的元素 事件类型:事件的触发方式(例如鼠标点击或键盘点击) 事件处理程序(事件监听器):事件触发后要执行的代码(函数形式) Javascript 使我们可以动态的去操作一个页

javascript(js)基础 dom基础(js语法)未来会删除此博客

<script> //文档中第三个图像:document.images[2] //文档中名为'aa'的表单:document.form['aa'] //层只有唯一 的id:document.layers[id] //微软的层id:docment.all[id] //如果想找到id的left位置并把它赋值给变量bs,在其他浏览器中是这样操作的:document.layers[id].left; //统一标准的dom是这样的:bs=document.getElementByid(id).style

【JS学习笔记】DOM基础-字节点,父节点

一.DOM基础 (1)什么是DOM?DOM,即document,是用来操作页面上的元素,比如操作div获取,修改样式等.是JS的组成部分,还是一套规范. (2)浏览器的支持情况 现在主流的浏览器有3种,分别是IE,Chrome,Firefox. IE:在IE6-8版本中,对DOM的支持差不多是百分之十几差不多了,但是到了IE9就有了质的飞跃. Chrome:介于两者之间,在60%左右,对DOM支持的不是那么的好也不是那么的差. Firefox:对于DOM的支持几乎可以用99%来形容. 二.DOM

js入门——Dom基础

DOM=DocumentObject Model,文档对象模型. Dom有三个不同的部分. 1.核心DOM 也是最基础的文档结构的标准模型 2.XMLDOM 针对XML文档的标准模型 3.HTML DOM 针对HTML文档的标准模型 对于一个新生程序员来说.HTML是什么,其实并不重要.但是都知道.html文件,可以用浏览器打开. HTML和XML,基本相同.只不过是,HTML中节点 标记,是预先定义好的.而XML中的节点,由文档的作者定义.所以XML是可扩展的. HTML: 超文本标记语言.主

js中dom基础及操作dom

dom基础认识 1.dom节点 1)children,获取的是所有的孩子节点,获取的是数组 2)parentNode,获取的是父节点,获取的是对象 2.dom操作方法 1)appendChild(),把节点添加到父节点后面,添加的节点是排在最后 2)insertBefore(),把节点添加到父节点的哪个位置之前 3)removeChild(),删除节点 下面一一通过代码来讲解,更加容易理解它们的含义 <html> <head> <title></title>

JS DOM编程艺术的学习—— JS学习笔记2015-7-5(第76天)

由于看高程3卡住了,所以现在在学习JS DOM编程艺术来巩固基础: 一.在看JS DOM 编程艺术的时候,有个作者提到的方法很实用, 就是在JS中变量和函数的命名方法:  变量的命名方法为使用下划线,比如: var temp_color = ['red','blue']; 函数就使用驼峰法,比如: function current_date(){}; 这样的习惯可以帮助理解,提高可读性,在理解变量和函数名的时候就很方便了: 二.还有个收获就是关于“对象”的理解又加深了 之前对于什么对象的属性,对

js写基础insertAfter()方法

DOM没有提供insertAfter()方法,使用js写一个基础的insertAfter()方法. ? 1 2 3 4 5 6 7 8 9 10 11 12 <script type="text/javascript"> function insertAfter(newElement,targetElement){     var parent = targetElement.parentNode;     if(targetElement == parent.lastCh

DOM基础(二)

在我之前写的DOM基础(一)的文章中提到过兼容性的问题,也就是在获取标签间文本信息的时候,早期的火狐版本是不支持innerText的,只支持textContent ,现在的火狐浏览器两者都支持.而IE老版本,也是IE8之前的版本,包括IE8是不支持textContent的,只支持innerText.那要如何解决这个问题呢,我们总不能规定用户兼容我们写的代码的浏览器吧.毕竟顾客是上帝这句话是不变的真理,同样的,对于互联网来说,用户就是上帝.其实做为一个前端开发者来说,痛恨的不是顾客为什么不用好的浏

获取元素节点(DOM基础 )

一.DOM 简介:以一种独立于平台和语言的方式访问和修改(添加.移动.改变或移除的方法和属性)一个文档(主要是网页)的内容和结构.是表示和处理一个HTML或XML文档的常用方法. 节点的定义:D(Web网页文档)O(document对象)M(网页文档的树形结构)M中树形结构可以理解为由节点组成.把每个标签看作一个节点.   节点的分类:以一个完成的标签为例<div id ="box">测试Div</div> 元素节点:是标签<div></div