Web03:JavaScript_Dom

相对于JavaScript_基础来说.我觉得这篇的东西才是重要的!

1.查找

或者说获得HTML元素.

1.通过ID查找

document.getElementById("HTML元素ID");

2.通过标签查找

document.getElementByTagName("标签名");

3.通过类名查找

document.getElementByClassName("class名");

2.改变

1.改变HTML输出流

document.write("你好鸭");

2.改变HTML内容(例子是文本)

document.getElementById("ID").innerHTML = "内容";

3.改变HTML属性(例子是img):

document.getElementById("ID").src("路径");

4.改变HTML样式

document.getElementById("ID").style.color="red";
document.getElementById("ID").style.visibility="hidden";

3.事件

如何使用?

<h1 οnclick="this.innerHTML='Ooops!'">点击文本!</h1>

当然,οnclick="JS函数",也是可以的.

1.点击事件:onclick

2.网页加载:onload,body标签有这个事件,处理cookie

3.离开网页:onunload,处理cookie

4.改变内容:onchange

5.鼠标进入/鼠标离开:onmouseover/onmouseout

6.onmousedown/onmouseup:鼠标左右键点击还未松开/鼠标左右键点击后释放.

注意鼠标点击事件的顺序为 onmousedown>>onmouseup>>onclick

4.EventListener

怎么用?

element.addEventListener("click", myFunction);

function myFunction() {
    alert ("Hello World!");
}
element.removeEventListener("click", myFunction);

4.1.addEventListener():

添加事件句柄.

特点:可以添加多个事件句柄,并且句柄可以为同类型的,可以向任何DOM对象添加,例如window,更简单的控制事件

4.1.1 添加多个事件句柄

element.addEventListener("click", myFunction);
element.addEventListener("click", mySecondFunction);

4.1.2 同一事件添加不同类型的句柄

element.addEventListener("mouseover", myFunction);
element.addEventListener("click", mySecondFunction);
element.addEventListener("mouseout", myThirdFunction);

4.1.3 向window添加重置窗口时的事件句柄

window.addEventListener("resize", function(){
    document.getElementById("demo").innerHTML = Math.random();
});

4.1.4 向事件句柄调用的有参函数传递参数

element.addEventListener("click", function(){ myFunction(p1, p2); });

4.1.5 事件执行的顺序

例如,你的p有一个点击事件,p标签中有一个div标签,div也存在一个点击事件,然后先执行谁?

这时,我们就可以使用三个参数的addEventListener了

addEventListener(event, function, useCapture);

其中的useCapture就是事件传递的两种方式:冒泡与捕获

什么是冒泡与捕获呢?

如果是冒泡的话,先内.如果是捕获的话,先外.

useCapture为false,即冒泡,也就是先内.

4.2.removeEventListener() 方法

移除事件句柄

element.removeEventListener("mousemove", myFunction);

5.节点

5.1创建节点:加到尾部

5.1.1创建元素(其实就是创建标签P):createElement

var para = document.createElement("p");

5.1.2创建文本节点:createTextNode

var node = document.createTextNode("这是一个新的段落。");

5.1.3将文本节点加到元素中:appendChild

para.appendChild(node);

5.1.4将创建的元素加到某个标签里

例如,我们存在一个Div id:div1

document.getElementById("div1").appendChild(para);

这时候,我们就将创建的元素加入到了Div元素的最后

5.2创建节点:加到头部

insertBefore()

document.getElementById("div1").insertBefore(para);

5.3移除元素:

注意!必须知道要移除元素的父元素,以下是简化的写法

var child = document.getElementById("p1");
child.parentNode.removeChild(child);

5.4替换元素:

注意!必须知道要移除元素的父元素.

//新元素
var para = document.createElement("p");
var node = document.createTextNode("这是一个新的段落。");
para.appendChild(node);
//父元素
var parent = document.getElementById("div1");
//要被替换的元素
var child = document.getElementById("p1");
parent.replaceChild(para, child);

6.集合

6.1 getElementsByTagName()

使用getElementsByTagName()返回一个HTMLCollection对象

类似于数组但不能用数组的一些方法

通过从0开始的索引获得元素

修改所有P元素的背景颜色

var myCollection = document.getElementsByTagName("p");
var i;
for (i = 0; i < myCollection.length; i++) {
    myCollection[i].style.backgroundColor = "red";
}

上面代码中,如果获取完myCollection后html页面存在变化,比如添加了p标签,则myCollection也会变化.

6.2 getElementsByClassName()

与上面的类似,但是上面的HTMLCollection存的可是HTML元素,而NodeList存的是文档节点

操作其实与上面的HTMLCollection差不多.

发布了94 篇原创文章 · 获赞 8 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_38827988/article/details/89316153