DOM:文档对象模型(Document Object Model)
DOM树
获取元素
1.根据ID获取
document.getElementById('time')
//1.id严格区分大小写
//2.返回的是元素对象
console.dir(time);//打印返回的元素对象,可以查看里面的属性方法
2.根据标签名获取
<ur>
<li>知否知否</li>
<li>知否知否</li>
<li>知否知否</li>
<li>知否知否</li>
</ur>
<ur id='nav'>
<li>生僻字</li>
<li>生僻字</li>
<li>生僻字</li>
<li>生僻字</li>
</ur>
<script>
//返回的是获取对象的集合,以伪数组的形式存储
var lis=document.getElementsByTagName('li');
console.log(lis);
</script>
通过ID再通过标签名查找:
var nav=document.getElementById('nav');
var navlis=nav.getElementsByTagName('li');
3.H5新增方法(如果不考虑兼容性,推荐使用)
<div class="box">盒子1</div>
<div class="box">盒子2</div>
<div id="nav">
<ur>
<li>首页</li>
<li>产品</li>
</ur>
</div>
<script>
// 1.getElementsByClassName(),根据类名获得元素集合
var boxs=document.getElementsByClassName('box');
console.log(boxs);
//2.querySelector(),返回指定选择器的第一个元素对象
var firstbox=document.querySelector('.box');//根据类名,前面需要加.
console.log(firstbox);
var nav=document.querySelector('#nav');//根据ID名,前面需要加#
console.log(nav);
var li=document.querySelector('li');//根据标签名
console.log(li);
//3.querySelectorAll(),返回指定选择器的所以元素对象
var allbox=document.querySelectorAll('.box');
console.log(allbox);
var lis=document.querySelectorAll('li');//根据标签名
console.log(lis);
</script>
获取特殊元素
<script>
//1.获取body元素
var bodyEle=document.body;
console.log(bodyEle);
//2.获取html元素
var htmlEle=document.documentElement;
console.log(htmlEle);
</script>
事件基础
点击按钮触发事件:
<button id="btn">唐伯虎</button>
<script>
//点击按钮弹出对话框
//1.事件三要素:事件源,事件类型,事件处理程序
//(1)事件源:事件被触发的对象
var btn=document.getElementById('btn');
//(2)事件类型:如何触发 什么事件
//(3)事件处理程序:通过函数赋值完成程序
btn.onclick=function(){
alert('点秋香');
}
</script>
点击div控制台输出
<div>123</div>
<script>
//执行事件步骤
//点击div控制台输出 我被选中了
//(1)获取事件源
var div=document.querySelector('div');
//(2)绑定事件,处理事件
//(3)添加事件处理程序
div.onclick=function(){
console.log('我被选中了');
}
</script>
操作元素
案例
<body>
<button>显示当前系统时间</button>
<div>某个时间</div>
<script>
//点击按钮后,div里面的文字发生变化
//1.获取元素
var btn = document.querySelector('button');
var div = document.querySelector('div');
var date
//2.注册事件
btn.onclick = function(){
div.innerText='2020-4-22';
}
</script>
innertext和innerHTML区别:
<div></div>
<p>
我是文字
<span>
123
</span>
</p>
<script>
//innertext和innerHTML的区别
//1.innertext 不识别HTML标签,是非标准的,会去除空格和换行
var div=document.querySelector('div');
div.innerText='<strong>今天是</strong>2020-04-22';
//2.innerHTML,识别HTML标签,是w3c标准,不会去除空格和换行
div.innerHTML='<strong>今天是</strong>2020-04-22';
//这两个属性可读写,可以获取里面内容
var p=document.querySelector('p');
console.log(p.innerText);//获取内容
console.log(p.innerHTML);
</script>
修改元素属性
点击按钮修改图片
<button id="ldh">刘德华</button>
<button id="zxy">张学友</button>
<img src="E:\images\ldh.jpg" alt="" title="刘德华">
<script>
//scr:图片文件路径 title:鼠标放在图片上显示的文字
//修改元素属性 scr
//1.获取元素
var ldh=document.getElementById('ldh');
var zxy=document.getElementById('zxy');
var img=document.querySelector('img');
//2.注册事件
zxy.onclick=function(){
img.src='E:\images\\zxy.jpg';
img.title='张学友';
}
ldh.onclick=function(){
img.src='E:\images\\ldh.jpg';
img.title='刘德华';
}
</script>
表单属性操作
1.value:通过value改值
dsabled:禁用按钮
<button>按钮</button>
<input type="text" value="输入内容">
<script>
//1.获取元素
var btn=document.querySelector('button');
var input=document.querySelector('input');
//2.注册事件,处理程序
btn.onclick=function(){
// input.innerHTML='被点击了';这是普通盒子
//表单里面的值通过value修改
input.value='被点击了';
btn.disabled=true;//表单按钮被禁用
//this.disabled=true; this指事件的调用者btn,方法一样
}
</script>
2.显示隐藏密码案例:
<body>
<div class="box">
<label for="">
<img src="E:\images\闭眼.png" alt="" id="eye">
</label>
<input type="password" name="" id="pwd">
</div>
<script>
//1.获取元素
var eye=document.getElementById('eye');
var pwd=document.getElementById('pwd');
//2.注册事件
var flag=0;
eye.onclick=function(){
if(flag==0){
pwd.type='text';
flag=1;//将flag赋值为1,记为显示密码
}
else{
pwd.type='password';
flag=0;//将flag赋值为0,记为隐藏密码
}
}
</script>
</body>