获取元素

  • 根据 ID 获取元素
语法: document.getElementById(id)
<div id='time'>2020-01-09</div>

<script>
var timer = document.getElementById('time');
console.log(timer); // 根据 ID 获取
// 查看里面的属性和方法
console.dir(timer)
</script>
  • 根据标签名获取元素
语法: document.getElementsByTagName('标签名')
<ul>
<li>u1</li>
</ul> <ol id="ol">
<li>ol</li>
</ol> <script>
// 根据元素名获取
var lis = document.getElementsByTagName('li');
console.log(lis); // HTMLCollection(2) [li, li] 返回所有的 ol和ul 的 li 元素 是复数 // 可以通过ele 继续获取元素名
var ol_ele = document.getElementById('ol');
var ol_lis = ol_ele.getElementsByTagName('li');
console.log(ol_lis); // ol 下所有的li </script>
  • 根据类名获取元素  H5 新增
语法: document.getElementsByClassName('类名')
<div class="cla"></div>
<script>
var cla = document.getElementsByClassName('cla'); // HTMLCollection [div.cla] 返回对象集合,需要使用对象 得取第一个元素,第二个是length
console.log(cla);
</script>
  • 选择器方式获取元素 H5新增
语法:
document.querySelector('选择器')
document.querySelectorAll('选择器')
<div class="cla"></div>
<ul>
<li>1</li>
<li>2</li>
</ul>
<script>
var cla = document.querySelector('.cla'); // 返回对象元素, 如果是class 则写.类名,id 则写#id
console.log(cla); var lis = document.querySelectorAll('li'); // 返回所有对象集合
console.log(lis);
</script>
  • 获取特殊元素(body, html)
document.body;  // body
document.documentElement; // html

事件

事件三要素
  1. 事件源: 触发事件的元素
  2. 事件类型: 什么事件 例如click点击事件
  3. 事件处理程序: 事件处理函数
常见的鼠标事件

鼠标事件

触发条件

onclick

鼠标点击左键触发

onmouseover

鼠标经过

onmouseout

鼠标离开

onfocus

获取鼠标焦点

onblur

失去鼠标焦点

onmousemove

鼠标移动触发

onmouseup

鼠标弹起触发

onmousedown

鼠标按下触发

操作元素

改变元素内容(设置,获取)
  • ele.innerText
  • ele.innerHtml

区别:

  1. 获取内容时: innerText去掉html标签,同时空格和换行也去掉, innerHtml 保留html标签,空格和换行
  2. 设置内容时: innerText不会识别html,而innerHTML会识别

<body>
<div></div>
<p>
我是文字
<span>123</span>
</p> <script>
var div = document.querySelector('div');
div.innerHTML = '<strong>今天是:</strong>'; // 今天是:
div.innerText = '<strong>今天是:</strong>'; // <strong>今天是:</strong> var p = document.querySelector('p');
console.log(p.innerText); // 我是文字 123
console.log(p.innerHTML);
/* 我是文字
<span>123</span>*/ </script> </body>

示例代码

元素属性操作
  • 获取属性的值
元素对象.属性名
  • 设置属性的值
元素对象.属性名 = 值

<script>
var ldh = document.querySelector('#ldh');
var zxy = document.querySelector('#zxy');
var img = document.querySelector('img'); // 获取元素属性的值
console.log(img.alt); // 刘德华 // 设置元素属性值
ldh.onclick = function () {
img.src = 'images/ldh.jpg';
img.title = '刘德华666'
};
zxy.onclick = function () {
img.src = 'images/zxy.jpg';
img.title = '张学友'
}
</script>

示例代码

表单元素属性
  • 设置表单属性值
元素对象.属性名
  • 设置属性值
元素对象.属性名 = 值
表单元素中有一些属性如:disabled、checked、selected,元素对象的这些属性的值是布尔型。

<body>
<button>按钮</button>
<input type="text" value="输入内容">
<script>
var btn = document.querySelector('button');
var input = document.querySelector('input'); btn.onclick = function () {
// 获取表单属性值
console.log(input.value); // 输入内容 // 修改表达属性值
input.value = '被修改了';
this.disabled = true; // 禁用点击按钮
}
</script>
</body>

示例代码

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>密码显示案例</title> <style>
.box {
position: relative;
width: 400px;
border-bottom: 1px solid #ccc;
margin: 100px auto;
} .box input {
width: 370px;
height: 30px;
border: 0;
outline: none;
} .box img {
position: absolute;
top: 2px;
right: 2px;
width: 24px;
}
</style>
</head>
<body>
<div class="box">
<label for="">
<img src="data:images/close.png" alt="" id="eye">
</label>
<input type="password" name="" id="pwd">
</div> <script>
// 获取元素
var eye = document.querySelector('#eye');
var input = document.querySelector('input');
// 设置一个变量,后面判断密码显示和隐藏用
var falg = 0;
eye.onclick = function () {
if (falg == 0) {
this.src = 'images/open.png';
input.type = 'text'; // 改变文本type属性
falg = 1;
}else {
this.src = 'images/close.png';
input.type = 'password';
falg = 0;
}
}
</script> </body>
</html>

案例-密码显示和隐藏

样式属性
  • style属性改变
元素对象的style属性也是一个对象!
元素对象.style.样式属性 = 值

<body>
<div></div>
<script>
var div = document.querySelector('div');
div.style.width = '200px';
div.style.backgroundColor = 'red';
</script>
</body>

示例代码

  • 操作className属性
元素对象.className = 值;

因为class是关键字,所有使用className

className会覆盖掉原先的类名

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title> <style>
.box {
position: relative;
width: 74px;
height: 88px;
border: 1px solid #ccc;
margin: 100px auto;
font-size: 12px;
text-align: center;
color: #f40;
/* display: block; */
} .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="data:images/tao.png" alt="">
<i class="close-btn">×</i>
</div> <script>
var close = document.querySelector('.close-btn');
var box = document.querySelector('.box');
close.onclick = function () {
box.style.display = 'none';
} </script>
</body>
</html>

案例-关闭按钮

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title> <style>
input {
color: #999;
}
</style> </head>
<body>
<input type="text" value="手机"> <script>
var input = document.querySelector('input');
input.onfocus = function () {
if (this.value === '手机') {
this.value = ''; // 改变元素属性值
}
this.style.color = '#333' // 样式属性改变
};
input.onblur = function () {
if (this.value === '') {
this.value = '手机'
}
this.style.color = '#333'
} </script>
</body>
</html>

案例-显示隐藏文本框内容

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title> <style>
div {
width: 600px;
margin: 100px auto;
} .message {
display: inline-block;
font-size: 12px;
color: #999;
background: url(images/mess.png) no-repeat left center;
padding-left: 20px;
} .wrong {
color: red;
background-image: url(images/wrong.png);
} .right {
color: green;
background-image: url(images/right.png);
}
</style> </head>
<body>
<div class="register">
<input type="password" class="ipt">
<p class="message">请输入6~16位密码</p>
</div> <script>
// 获取元素
var ipt = document.querySelector('.ipt');
var message = document.querySelector('.message'); // 注册事件,失去焦点事件
ipt.onblur = function() {
// 根据表单里面值的长度 ipt.value.length
if (this.value.length < 6 || this.value.length > 16) {
// console.log('错误');
message.className = 'message wrong';
message.innerHTML = '您输入的位数不对要求6~16位';
} else {
message.className = 'message right';
message.innerHTML = '您输入的正确';
}
}; </script>
</body>
</html>

案例-注册密码提示错误

自定义属性
  • 获取属性名
  1. ele.属性名 (自带属性)
  2. ele.getAttribute(自定义属性名)

<body>
<div id="demo" index="1"> </div>
<script>
var div = document.querySelector('#demo');
// 获取属性
console.log(div.id); // demo
//获取自定义属性
console.log(div.getAttribute('index')); // 1
</script>
</body>

示例代码

  • 设置属性
  1. ele.属性名 = ‘值’ (自带属性)
  2. ele.setAttribute(‘属性’)

<body>
<div id="demo" > </div>
<script>
var div = document.querySelector('#demo');
// 自带属性设置
div.id = 'test';
// 自定义属性设置
div.setAttribute('index', 'ce_shi')
</script>
</body>

示例代码

  • 移除属性
  1. ele.removeAttribute(‘属性’)

<body>
<div id="demo" index="1"> </div>
<script>
var div = document.querySelector('#demo');
// 移除自定义属性
div.removeAttribute('index')
</script>
</body>

示例代码

  • H5自定义属性
  1. 自定义属性以’data-’开头命名
  2. H5新增ele.dataset.自定名 或者 ele.dataset[‘自定义名’]   ie11 才支持

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>tab栏切换</title> <style>
* {
margin: 0;
padding: 0;
} li {
list-style-type: none;
} .tab {
width: 978px;
margin: 100px auto;
} .tab_list {
height: 39px;
border: 1px solid #ccc;
background-color: #f1f1f1;
} .tab_list li {
float: left;
height: 39px;
line-height: 39px;
padding: 0 20px;
text-align: center;
cursor: pointer;
} .tab_list .current {
background-color: #c81623;
color: #fff;
} .item_info {
padding: 20px 0 0 20px;
} .item {
display: none;
}
</style>
</head>
<body>
<div class="tab">
<div class="tab_list">
<ul>
<li class="current">商品介绍</li>
<li>规格与包装</li>
<li>售后保障</li>
<li>商品评价(50000)</li>
<li>手机社区</li>
</ul>
</div>
<div class="tab_con">
<div class="item" style="display: block;">
商品介绍模块内容
</div>
<div class="item">
规格与包装模块内容
</div>
<div class="item">
售后保障模块内容
</div>
<div class="item">
商品评价(50000)模块内容
</div>
<div class="item">
手机社区模块内容
</div> </div>
</div> <script>
// 获取元素
var tab_list = document.querySelector('.tab_list');
var lis = tab_list.querySelectorAll('li');
var items = document.querySelectorAll('.item'); for (var i=0; i< lis.length; i++) {
// 设置定义属性为index
lis[i].setAttribute('index', i); // 给每个li注册点击事件
lis[i].onclick = function () { // 干掉其他人
for (var i=0; i<lis.length; i++) {
lis[i].className = ''
} this.className = 'current'; // 获取自定义属性
var index = this.getAttribute('index');
for (var i=0; i<items.length; i++) {
items[i].style.display = 'none'
}
items[index].style.display = 'block' }
} </script> </body>
</html>

案例-tab栏切换

排他思想

如果有同一组元素,我们想要某一个元素实现某种样式, 需要用到循环的排他思想算法:

干掉所有人,留下我自己。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>按钮</title> <style> </style>
</head>
<body>
<button>按钮1</button>
<button>按钮2</button>
<button>按钮3</button>
<button>按钮4</button>
<button>按钮5</button>
<script>
var btns = document.querySelectorAll('button'); for (var i=0; i < btns.length; i++) {
// 注册点击事件
btns[i].onclick = function () {
for (var i=0; i<btns.length; i++) {
// 干掉所有人
btns[i].style.backgroundColor = ''
}
//留下我自己
this.style.backgroundColor = 'red'
}
}
</script> </body>
</html>

案例1-按钮

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>表格变色</title>
<style>
table {
width: 800px;
margin: 100px auto;
text-align: center;
border-collapse: collapse;
font-size: 14px;
} thead tr {
height: 30px;
background-color: skyblue;
} tbody tr {
height: 30px;
} tbody td {
border-bottom: 1px solid #d7d7d7;
font-size: 12px;
color: blue;
} .bg {
background-color: pink;
}
</style>
</head>
<body>
<table>
<thead>
<tr>
<th>代码</th>
<th>名称</th>
<th>最新公布净值</th>
<th>累计净值</th>
<th>前单位净值</th>
<th>净值增长率</th>
</tr>
</thead>
<tbody>
<tr>
<td>003526</td>
<td>农银金穗3个月定期开放债券</td>
<td>1.075</td>
<td>1.079</td>
<td>1.074</td>
<td>+0.047%</td>
</tr>
<tr>
<td>003526</td>
<td>农银金穗3个月定期开放债券</td>
<td>1.075</td>
<td>1.079</td>
<td>1.074</td>
<td>+0.047%</td>
</tr>
<tr>
<td>003526</td>
<td>农银金穗3个月定期开放债券</td>
<td>1.075</td>
<td>1.079</td>
<td>1.074</td>
<td>+0.047%</td>
</tr>
<tr>
<td>003526</td>
<td>农银金穗3个月定期开放债券</td>
<td>1.075</td>
<td>1.079</td>
<td>1.074</td>
<td>+0.047%</td>
</tr>
<tr>
<td>003526</td>
<td>农银金穗3个月定期开放债券</td>
<td>1.075</td>
<td>1.079</td>
<td>1.074</td>
<td>+0.047%</td>
</tr>
<tr>
<td>003526</td>
<td>农银金穗3个月定期开放债券</td>
<td>1.075</td>
<td>1.079</td>
<td>1.074</td>
<td>+0.047%</td>
</tr>
</tbody>
</table> <script>
// 获取元素
var trs = document.querySelector('tbody').querySelectorAll('tr');
for (var i=0; i < trs.length; i++) {
// 注册鼠标经过事件
trs[i].onmouseover = function () {
this.className = 'bg'
};
// 注册鼠标离开事件
trs[i].onmouseout = function () {
this.className = ''
}
} </script> </body>
</html>

案例2-表单隔行变色

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>全选反选</title>
<style>
* {
padding: 0;
margin: 0;
} .wrap {
width: 300px;
margin: 100px auto 0;
} table {
border-collapse: collapse;
border-spacing: 0;
border: 1px solid #c0c0c0;
width: 300px;
} th,
td {
border: 1px solid #d0d0d0;
color: #404060;
padding: 10px;
} th {
background-color: #09c;
font: bold 16px "微软雅黑";
color: #fff;
} td {
font: 14px "微软雅黑";
} tbody tr {
background-color: #f0f0f0;
} tbody tr:hover {
cursor: pointer;
background-color: #fafafa;
}
</style>
</head>
<body>
<div class="wrap">
<table>
<thead>
<tr>
<th>
<input type="checkbox" id="j_cbAll"/>
</th>
<th>商品</th>
<th>价钱</th>
</tr>
</thead>
<tbody id="j_tb">
<tr>
<td>
<input type="checkbox"/>
</td>
<td>iPhone8</td>
<td>8000</td>
</tr>
<tr>
<td>
<input type="checkbox"/>
</td>
<td>iPad Pro</td>
<td>5000</td>
</tr>
<tr>
<td>
<input type="checkbox"/>
</td>
<td>iPad Air</td>
<td>2000</td>
</tr>
<tr>
<td>
<input type="checkbox"/>
</td>
<td>Apple Watch</td>
<td>2000</td>
</tr> </tbody>
</table>
</div> <script>
// 获取元素
var j_cbAll = document.querySelector('#j_cbAll');
var j_tb = document.querySelector('#j_tb');
var inputs = j_tb.querySelectorAll('input'); // 全选按钮,根据id j_cbAll
j_cbAll.onclick = function () {
// console.log(this.checked);
for (var i=0; i< inputs.length; i++) {
inputs[i].checked = this.checked;
}
}; for (var i=0; i < inputs.length; i++) {
inputs[i].onclick = function () {
var flag = true;
for (var i=0; i < inputs.length; i++) {
// 如果变量不为真,则全选框就不为真,直接退出循环
if (!inputs[i].checked) {
flag = false;
break;
}
}
j_cbAll.checked = flag; // 设置全选按钮为变量值 true or false
}
} </script> </body>
</html>

案例3-全选和反选

JavaScript DOM–元素操作的更多相关文章

  1. JavaScript DOM 元素属性 状态属性

    JavaScript DOM 元素属性 状态属性 版权声明:未经允许,严禁转载! 元素的属性 核心 DOM 为我们提供了操作元素标准属性的统一 API. 所有属性节点都储存在元素的 attribute ...

  2. 深度解析JQuery Dom元素操作技巧

    深度解析JQuery Dom元素操作技巧 DOM是一种与浏览器.平台.语言无关的接口,使用该接口可以轻松访问页面中所有的标准组件,这篇文章给大家介绍了JQuery dom元素操作方法,写的十分的全面细 ...

  3. JavaScript DOM 基础操作

    JavaScript DOM 基础操作 一.获取元素的六方式 document.getElementById('id名称') //根据id名称获取 document.getElementsByclas ...

  4. dom元素操作(动态事件绑定)

    遇到的问题:动态生成的内容,事件绑定会出错. 例子:http://snowinmay.net/jqm/dom-learn2.html 1.绑定事件对动态生成的新元素无效. 问题描述:bind事件绑定后 ...

  5. JavaScript DOM 常用操作

    1.理解DOM: DOM(Document Object Model ,文档对象模型)一种独立于语言,用于操作xml,html文档的应用编程接口. 怎么说,我从两个角度理解: 对于JavaScript ...

  6. jquery学习笔记(二):DOM元素操作

    内容来自[汇智网]jquery学习课程 2.1 元素属性操作 1.获取元素的属性 语法:attr(name) 参数name表示属性的名称 2.设置元素的属性 单个属性设置语法:attr(key,val ...

  7. Javascript学习二---DOM元素操作

    Javascript 主要包括:JS的语法,DOM和BOM操作以及ECMAScript语法. 1 获取元素的方法 获取元素方法: 通过ID:document.getElementById(); 一个 ...

  8. JavaScript HTML DOM 元素操作(节点)

      在文档对象模型 (DOM) 中,每个节点都是一个对象.DOM 节点有三个重要的属性 : 1. nodeName : 节点的名称 2. nodeValue :节点的值 3. nodeType :节点 ...

  9. JavaScript DOM–节点操作

    节点 节点至少拥有nodeType(节点类型).nodeName(节点名称)和nodeValue(节点值)这三个基本属性. 元素节点 nodeType  为1 属性节点 nodeType  为2 文本 ...

随机推荐

  1. [JAVA] 面向对象小小总结

    面向对象概述 符合人类思维习惯的编程思想 , 生活中存在着不同形态的事物 , 这些事物存在着不同的联系 , 在程序中使用对象来映射现实中事物 , 使用对象关系来描述事物之间的联系, 这种思想就是面向对 ...

  2. 在Docker中部署Confluence和jira-software

    -------谢谢您的参考,如有疑问,欢迎交流 version: centos==7.2 jdk==1.8 confluence==6.15.4 jira-software==8.2.1 docker ...

  3. 【已解决】redis-py-cluster安装成功但导入失败,提示cannot import name b

    背景: 一直跑的好好的自动化突然跑不起来了,提示是在导包的时候发生错误 发生错误的行是 from rediscluster import StrictRedisCluster 提示信息如下 检查安装包 ...

  4. fiddler使用post方法带参数(base64)请求接口,模拟表单提交,类似工具postman

    头格式如下: Content-Length: Content-Type: multipart/form-data; boundary=-------------------------- Host: ...

  5. PIE-SDK For C++矢量数据空间索引的创建

    1.功能简介 空间索引的使用便于数据的查询:所以在创建矢量数据的时候创建空间索引,下面对矢量数据如何创建空间索引进行功能介绍. 2.功能实现说明 2.1 实现思路及原理说明 第一步 创建矢量要素数据集 ...

  6. C语言实现链式二叉树静态创建,(先序遍历),(中序遍历),(后续遍历)

    #include <stdio.h>#include <stdlib.h> struct BTNode{ char data ; struct BTNode * pLchild ...

  7. Github+Hexo一站式部署个人博客(原创)

    写在前面 注:博主 Chloneda:个人博客 | 博客园 | Github | Gitee | 知乎 本文源链接:https://www.cnblogs.com/chloneda/p/hexo.ht ...

  8. Django生成脚本迁移文件时,报错django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.

    一.本人环境:django:3.0.2, python:3.8.1,  pymysql:0.9.3 二.解决步骤: 1.django目录下找到 base.py文件: 2.在base.py文件中注释以下 ...

  9. 551-学生出勤记录 I

    551-学生出勤记录 I 给定一个字符串来代表一个学生的出勤记录,这个记录仅包含以下三个字符: 'A' : Absent,缺勤 'L' : Late,迟到 'P' : Present,到场 如果一个学 ...

  10. 题解【AcWing95】费解的开关

    题面 一道非常好的递推练习题. 我们考虑每次枚举第一行的操作,由上一行的状态递推出下一行的状态,最后判断最后一行是否全部为 \(1\) 即可. 实现代码时要注意一些细节问题. #include < ...