文档对象模型DOM是W3C组织推荐的处理可扩展标记语言的标准编程接口。
W3C已经定义了一系列的DOM接口,通过这些DOM接口可以改变网页的内容、结构和样式。
使用getElementByld()方法可以获取带有ID的元素对象。
<body>
<div id="time">
2020.11.15
div>
<script>
var timer = document.getElementById('time');
console.log(timer);
console.log(typeof timer);
console.dir(timer);
script>
body>
文档页面从上往下加载,所以的 得现有标签,因此script写在标签 下面。
get获得element元素by通过驼峰命名法
参数id是大小写敏感的字符串
返回的是一个元素对象
console.log 可以打印返回的元素对象,更好的查看里面的属性和方法。
使用getElementsByTagName()方法可以返回带有指定标签名的对象的集合。
<body>
<ul>
<li>1li>
<li>2li>
<li>3li>
ul>
<script>
var lis = document.getElementsByTagName('li');
console.log(lis);
console.log(lis[0]);
for(var i=0;i<lis.length;i++){
console.log(lis[i]);
}
script>
body>
返回一个对象的集合,可以返回其中某一个,也可以遍历得到全部。
如果页面中只有一个
可以定父元素来获取标签名
<body>
<ul>
<li>111li>
<li>222li>
<li>333li>
ul>
<ol>
<li>1111111111li>
<li>2222222222li>
<li>3333333333li>
ol>
<script>
var ol = document.getElementsByTagName('ol');
console.log(ol[0].getElementsByTagName('li'));
script>
body>
<body>
<div class='box'>
盒子1
div>
<div class='box'>
盒子2
div>
<div id='nav'>
<ul>
<li>首页li>
<li>产品li>
ul>
div>
<script>
vars boxs = document.getElementsByClassName('box');
console.log(boxs);
script>
body>
document.querySelector(‘选择器’)根据指定选择器返回第一个元素对象。切记里面的选择器需要加符号。
例如:var firstBox = document.querySelector('.box');
选择类元素,或者var nav = document.querySelector('#nav')
选择ID元素。
document.quarySelectorAll(‘选择器’)根据指定元素返回所有元素对象。 切记里面的选择器需要加符号。
获取body 元素
var bodyEle = document.body;
console.log(bodyEle);
获取html元素
var htmlEle = document.ducomentElement;
console.log(htmlEle);
JavaScript使我们有能力创建页面,而事件是可以被JavaScript侦测到的行为。网页中的每个元素都可以产生某些可以触发JavaScript的事件。
事件由三部分组成,分别为事件源、事件类型和事件处理程序。也称为事件三要素。
事件源:事件被触发的对象。
var btn =document.getElementById('btn');
事件类型:如何触发,比如鼠标经过还是鼠标点击。
事件处理程序:通过一个函数赋值的方式完成。
<button id="btn">
按钮
button>
<script>
var btn = document.getElementById('btn');
btn.onclick = function(){
alert('你点击了按钮');
}
script>
点击按钮,则会弹出“你点击了按钮”的提示框。
执行事件的步骤:
1. 获取事件源
2. 注册事件(绑定事件)
3. 添加事件处理程序
JavaScript的DOM操作可以改变网页内容、结构和样式,我们可以利用DOM操作元素来改变元素里面的内容、属性等。
element.innerText
从起始位置到终止位置的内容,但它去除html标签,同时空格和换行也会去掉
element.innerHTML
起始位置到终止位置的全部内容,包括html标签,同时保留空格和换行。
innerText不识别HTML标签,innerHTML识别HTML标签。这两个属性是可读写的。
<body>
<button>
显示系统当前时间
button>
<div>
某个时间
div>
<script>
var btn = document.querySelector('button');
var div = document.querySelector('div');
btn.onclick = function(){
div.innerText = getDate();
}
function getDate(){
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth()+1;
var dates = date.getDate();
var arr = ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'];
var day = date.getDay();
return '今天是'+year+'年'+month+'月'+dates+'日'+arr[day];
}
script>
body>
运行后,显示某个时间,当点击显示系统当前时间即可显示进当前的日期及星期。
<body>
<button id="ldh">
刘德华
button>
<button id="zxy">
张学友
button>
<img src="images/ldh.jpg" alt="" title="刘德华">
<script>
//获取元素属性
var ldh = document.getElementById('ldh');
var zxy = document.getElementById('zxy');
var img = document.querySelector('img');
//注册事件 处理程序
zxy.onclick =function(){
img.src = 'images/zxy.jpg';
img.title ='张学友';
}
ldh.onclick = function(){
img.src = 'images/ldh.jpg';
img.title = '刘德华';
}
script>
body>
运行程序出现两个按钮"刘德华","张学友"和一张刘德华的图片,点击张学友,图片变成张学友的图片,鼠标放上面显示张学友,点击刘德华,图片变成刘德华的图片,鼠标放上面显示刘德华。
<body>
<button>
按钮
button>
<input type="text" value="输入内容">
<script>
var btn = document.querySelector('button');
var input = document.querySelector('input');
btn.onclick = function(){
input.value = '被点击了';
this.disabled = true;
}
script>
body>
程序运行后,显示按钮和输入内容的文本框,点击按钮后,按钮会变成无法再次点击的样式,文本框里面内容会进行更改。
element.style修改行内式操作,element.className修改类名样式属性
<head>
<style>
div {
width:200px;
height:200px;
background-color:pink;
}
style>
head>
<body>
<div>
div>
<script>
var div = document.quertSelector('div');
div.onclick = function(){
this.style.backgroundColor = 'purple';
this.style.width='300px';
}
script>
body>
程序运行后,出现一个宽高均为200像素的粉红色盒子,点击盒子,变成宽300像素高200像素的紫色盒子。JS修改style样式操作,产生的是行内样式。
<head>
<style>
div {
width:100px;
height:100px;
background-color:pink;
}
.change {
width:200px;
height:200px;
background-color:purple;
}
style>
head>
<body>
<div>
文本
div>
<script>
vet test =document.querySelector('div');
test.onclick = function(){
//将当前元素的类名改为change
this.className = 'change';
}
script>
body>