<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="time">2019-9-9</div>
<!-- 1.因为我们从文档页面从上往下加载,所以先得获取到标签,即把script写到标签的下面
2.通过getElementById获得元素
3.参数 id是大小写敏感的字符串,所以要加引号
4.返回的是元素对象
-->
<script>
var timer = Document.getElementById('time');
console.log(timer);
console.log(typeof timer);
// console.dir 打印我们返回的元素对象,更好的查看里面的属性和方法
console.dir(timer);
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<ul>
<li>知否知否,应是绿肥红瘦1</li>
<li>知否知否,应是绿肥红瘦2</li>
<li>知否知否,应是绿肥红瘦3</li>
<li>知否知否,应是绿肥红瘦4</li>
<li>知否知否,应是绿肥红瘦5</li>
</ul>
<script>
//返回的是,获取过来元素对象的集合,以伪数组的形式存储的
var li = document.getElementsByTagName('li')
console.log(li);
console.log(li[0]);
//依次打印里面的元素可以采取遍历的方式
for (var i = 0; i < li.length; i++){
console.log(li[i]);
}
//如果页面中只有一个li,返回的还是伪数组的形式
//如果页面中没有这个元素,返回的就是空的伪数组的行形式
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<ul>
<li>知否知否,应是绿肥红瘦1</li>
<li>知否知否,应是绿肥红瘦2</li>
<li>知否知否,应是绿肥红瘦3</li>
<li>知否知否,应是绿肥红瘦4</li>
<li>知否知否,应是绿肥红瘦5</li>
</ul>
<ol id="ol">
<li>生僻字1</li>
<li>生僻字2</li>
<li>生僻字3</li>
<li>生僻字4</li>
<li>生僻字5</li>
</ol>
<script>
//获取父元素ol里面的li,就不能用document来获取,因为会把ul里面的同样获取到,而且父元素必须是指定的单个元素
var ol = document.getElementsByTagName('ol'); //[ol] 伪数组是不能作为父元素的
//[ol]这个伪数组里面只有ol一个元素,所以可以通过ol[0]来拿到第一个ol
console.log(ol[0].getElementsByTagName('li'))
//另:给ol标签添一个id
var ol = document.getElementById('ol');
console.log(ol.getElementsByTagName('id'));
var
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div class="box">盒子1</div>
<div class="box">盒子2</div>
<div id="nav">
<ul>
<li>首页</li>
<li>产品</li>
</ul>
</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');
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>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
//1.获取body元素
var bodyeEle = document.body;
console.log(bodyeEle);
console.dir(bodyeEle);
//2.获取html元素
var htmlEle = document.documentElement;
console.log(htmlEle);
</script>
</body>
</html>
得到元素后,进行相应的操作,但是操作元素之前需要特殊的情况去触发它(鼠标点击),就需要事件来帮助完成
事件基础
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<button id="xiuxiu">程秀</button>
<script>
//点击一个按钮,弹出对话框
//1.事件由三部分组成 事件源 事件类型 事件处理程序 也称为事件三要素
//(1)事件源 是事件被触发的对象 即按钮
var btn = document.getElementById('xiuxiu');
//(2)事件类型 如何触发 什么事件 比如鼠标点击(onclick)鼠标经过,还是键盘按下
//(3)事件处理过程 通过一个函数赋值的方式完成
btn.onclick = function(){
alert('大笨蛋');
}
</script>
</body>
</html>
操作元素(DOM核心就是操作元素)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div,p {
width: 300px;
height: 30px;
line-height: 30px;
color: blue;
background-color: pink;
}
</style>
</head>
<body>
<button>显示当前系统时间</button>
<div>某时间</div>
<p>123</p>
<script>
//当我们点击了按钮 div里面的文字会发生变化
//1.获取元素
var btn = document.querySelector('button');
var div = document.querySelector('div');
//2.注册事件
btn.onclick = function(){
//div.innerText = '2019-5-8';//改变文字
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.getDate();
return '今天是' + year + '年' + month + '月' + date + '日' + arr[day];
}
//元素不添加事件直接使用
var p = document.querySelector('p');
p.innerText = getDate();
</script>
</body>
</html>
4.2、常用元素的属性操作(修改元素属性)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<button id="ldh">刘德华</button>
<button id="zxy">张学友</button>
<img src="images/ldh.jpg" alt="" title="刘德华">
<script>
//修改元素属性 src
//1.获取元素
var ldh = document.getElementById('ldh');
var zxy = document.getElementById('zxy');
var img = document.querySelector('img');
//2.注册事件 处理程序
//元素的某个属性赋相应的值即可
zxy.onclick = function(){
img.src = 'images/zxy.jpg';
img.title = '张学友';
}
ldh.onclick = function(){
img.src = 'images/ldh.jpg';
img.title = '刘德华';
}
</script>
</body>
</html>
例子
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.box {
position: relative;
width: 74px;
height: 88px;
border:1px solid pink;
margin: 100px auto;
font-size: 12px;
text-align: center;
color: #f40;
}
.box img {
width: 60px;
margin-top: 5px;
}
.close-btn {
position: absolute;
top: -1px;
left: -16px;
width: 14px;
height: 14px;
border: 1px solid #ccc;
line-height: 14px;
font-family: Arial, Helvetica, sans-serif;
cursor: pointer;
}
</style>
</head>
<body>
<div class="box">
淘宝二维码
<img src="../images/淘宝.png" alt="">
<i class="close-btn">x</i>
</div>
<script>
//1.获取元素
var box = document.querySelector('.box');
var btn = document.querySelector('.close-btn');
//2.绑定事件
btn.onclick = function(){
box.style.display = 'none';
}
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
*{
margin: 0;
padding: 0;
}
li{
list-style-type: none;
}
.box{
width: 250px;
height: 100px auto;
}
.box li{
float: left;
width: 24px;
height: 24px;
background-color: pink;
margin: 15px;
}
</style>
</head>
<body>
<div class="box">
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
<script>
//1.获取元素 所有的小li
var lis = document.querySelectorAll('li');
for(var i = 0; i < lis.length; i++){
//让索引号 乘以 44 就是每个li得背景y坐标
var index = i * 44;
lis[i].style.backgroundPosition = '0 -' + index + 'px';
}
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
input{
color: #999;
}
</style>
</head>
<body>
<input type="text" value="手机">
<script>
//1.获取元素
var text = document.querySelector('input');
//2.绑定事件 获得焦点事件 onfocus
text.onfocus = function() {
//console.log('得到了焦点');
if(this.value === '手机'){
this.value = ''
}
//获得焦点需要把文本框里面的文字颜色变为黑色
this.style.color = '#333';
}
//3.绑定事件 失去焦点事件 onblur
text.onblur = function() {
//console.log('失去了焦点');
if(this.value === ''){
this.value = '手机'
}
//失去焦点需要把文本框里面的文字颜色变为灰色
this.style.color = '#999';
}
</script>
</body>
</html>
案例: