JavaScript(三)

JS HTML DOM

DOM简介

  • 通过HTML DOM,可访问JavaScript HTML文档的所有元素。
  • 当网页加载时,浏览器会创建页面的文档对象模型。
  • HTML DOM模型被构造为对象的树。
    在这里插入图片描述

JavaScript能够改变页面中的所有HTML元素,属性,CSS样式,能够对页面中的所有时间做出反应。

  • JavaScript操作HTML元素,首先需要找到该元素。有三种方法:

    • 通过id 找到HTML元素
    • 通过标签名找到html元素
    • 通过类名找到HTML元素
  • 通过id查找html元素

var x=document.getElementById(“intro”)
找到:以对象形式返回该元素
找不到:x将包含null

  • 通过标签名查找html元素

var x=document.getElementById(“main”)
var y=x.getElementsByTagName(“p”);

改变HTML

  • HTML DOM允许JavaScript改变HTML元素的内容
  • 改变HTML输出流
<!DOCTYPE html>
<html>
<body>

<script>
document.write(Date());
</script>

</body>
</html>
  • 改变HTML内容

document.getElementById(id).innerHTML=new HTML

<!DOCTYPE html>
<html>
<body>

<h1 id="header">Old Header</h1>

<script>
var element=document.getElementById("header");
element.innerHTML="New Header";
</script>

</body>
</html>
  • 改变HTML属性

document.getElementById(id).attribute=new value

<img id="image" src="smiley.gif">
<script>
document.getElementById("image").src="landscape.jpg";
</script>

改变CSS

  • HTML DOM允许JavaScript改变HTML元素的样式。

document.getElementById(id).style.property=new style

<p id="p2">Hello World!</p>
<script>
document.getElementById("p2").style.color="blue";
</script>

<h1 id="id1">My Heading 1</h1>
<button type="button" onclick="document.getElementById('id1').style.color='red'">
点击这里
</button>

DOM事件

  • HTML DOM使JavaScript有能力对HTML事件做出反应
  • 对事件做出反应,在事件发生时执行代码

οnclick=JavaScript
- 用户点击鼠标时
- 网页已加载时
- 图像已加载时
- 鼠标移动到元素时
- 提交HTML表单时
- 用户触发按键时

<!DOCTYPE html>
<html>
<head>
<script>
function changetext(id)
{
id.innerHTML="谢谢!";
}
</script>
</head>
<body>
<h1 onclick="changetext(this)">请点击该文本</h1>
</body>
</html>
  • HTML事件属性

<button οnclick=“displayDate()”>点击这里

  • 使用HTML DOM来分配事件
<script>
document.getElementById("myBtn").onclick=function(){displayDate()};
</script>
  • onload和onunload事件

onload和onunload在用户进入或离开页面时被触发
onload 和 onunload 事件可用于处理 cookie。
<body οnlοad=“checkCookies()”>

  • onchange事件

onchange 事件常结合对输入字段的验证来使用。
当用户改变输入字段的内容时,会调用 upperCase() 函数。

<input type="text" id="fname" onchange="upperCase()">
  • onmouseover和onmouseout事件

onmouseover 和 onmouseout 事件可用于在用户的鼠标移至 HTML 元素上方或移出元素时触发函数。

  • onmousedown、onmouseup 以及 onclick 事件

onmousedown, onmouseup 以及 onclick 构成了鼠标点击事件的所有部分。首先当点击鼠标按钮时,会触发 onmousedown 事件,当释放鼠标按钮时,会触发 onmouseup 事件,最后,当完成鼠标点击时,会触发 onclick 事件。

JavaScript HTML DOM EventListener

  • addEventListener() 方法

element.addEventListener(event, function, useCapture);
第一个参数是事件的类型 (如 “click” 或 “mousedown”).
第二个参数是事件触发后调用的函数。
第三个参数是个布尔值用于描述事件是冒泡还是捕获。该参数是可选的。

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

element.addEventListener("mouseover", myFunction);
element.addEventListener("click", mySecondFunction);
element.addEventListener("mouseout", myThirdFunction);
  • windows对象添加事件句柄
// 当用户重置窗口大小时添加事件监听:
window.addEventListener("resize", function(){
    document.getElementById("demo").innerHTML = sometext;
});

  • 事件冒泡或事件捕获

事件传递有两种方式:冒泡与捕获。
事件传递定义了元素事件触发的顺序。 如果你将

元素插入到

元素中,用户点击

元素, 哪个元素的 “click” 事件先被触发呢?
在 冒泡 中,内部元素的事件会先被触发,然后再触发外部元素,即:

元素的点击事件先触发,然后会触发

元素的点击事件。
在 捕获 中,外部元素的事件会先被触发,然后才会触发内部元素的事件,即:
元素的点击事件先触发 ,然后再触发

元素的点击事件。

addEventListener(event, function, useCapture);
默认值为 false, 即冒泡传递,当值为 true 时, 事件使用捕获传递。

document.getElementById("myDiv").addEventListener("click", myFunction, true);
  • removeEventListener() 方法

removeEventListener() 方法移除由 addEventListener() 方法添加的事件句柄

element.removeEventListener("mousemove", myFunction);

DOM节点

  • 添加和删除节点
  • 创建新的html元素
var para=document.createElement("p") #创建新元素
var node=document.createTextNode("这是新段落"); #创建新节点
para.appendChild(node);
var element=document.getElementById("div1");
element.apppendChild(para):
// element.insertBefore(para, child);  将新元素添加到开始位置
  • 删除已有的HTML元素
var parent=document.getElementById("div1");
var child=document.getElementById("p1");
parent.removeChild(child);
#找到您希望删除的子元素,然后使用其 parentNode 属性来找到父元素:
var child=document.getElementById("p1");
child.parentNode.removeChild(child);
  • 替换 HTML 元素 - replaceChild()
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);

DOM 集合(Collection)

  • getElementsByTagName() 方法返回 HTMLCollection 对象。HTMLCollection 对象类似包含 HTML 元素的一个数组。
var myCollection = document.getElementsByTagName("p");
var i;
for (i = 0; i < myCollection.length; i++) {
    myCollection[i].style.backgroundColor = "red";
}

DOM 节点列表

  • NodeList 对象是一个从文档中获取的节点列表 (集合)
var myNodelist = document.querySelectorAll("p");
var i;
for (i = 0; i < myNodelist.length; i++) {
    myNodelist[i].style.backgroundColor = "red";
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值