html---js中的DOM
DOM操作标签
我们在DOM操作标签的时候在起变量名的时候如果该变量指向的是一个标签,那么建议使用xxxEle,eg:aEle\pEle\divEle\spanEle。
动态创建一个a标签并添加到页面指定位置
var aEle = document.createElement('a') // 创建a标签
aEle.href = 'https://www.sogo.com/' // 设置href属性
aEle.innerText = '点我去搜狗' // 设置文本内容
var divEle = document.getElementById('d1')
divEle.append(aEle) // 内部追加标签
标签属性
1.默认属性
比如id,class等,设置的时候可以直接通过点的方式
```js
divEle.id = 'd1'
divEle.class = 'c1'
```
2.自定义属性
比如username,password等,设置的时候需要使用setAttribute
```js
divEle.setAttribute('username','jason')
```
3.其他
```js
divEle.getAttribute("age") 获取指定属性
divEle.removeAttribute("age") 移除指定属性
```
innerText与innerHTML
取值的时候
innerText只会获取文本内容
innerHTML获取文本和标签
设置值的时候
innerText不识别标签语法
innerHTML识别标签语法
获取值操作
直接通过标签对象.value获取。
var iEle = document.getElementById("i1");
console.log(iEle.value);
var sEle = document.getElementById("s1");
console.log(sEle.value);
var tEle = document.getElementById("t1");
console.log(tEle.value);
获取文件数据的时候:
标签对象.value只能获取到文件路径,而标签对象.files结果是一个数组,可以通过索引获取具体文件对象。
属性操作
class类属性操作
标签对象.classList 查看所有的类属性
标签对象.classList.remove(cls) 删除指定类
标签对象.classList.add(cls) 添加类
标签对象.classList.contains(cls) 存在返回true,否则返回false
标签对象.classList.toggle(cls) 存在就删除,否则添加
样式操作
语法:标签对象.style.属性名
divEle.style.backgroundColor="red"
divEle.style.height = '800px'
事件
就是用户在html页面的操作达到某个条件会自动触发的功能。eg:用户点击某个标签弹出警告框,双击某个标签提示信息。
如何给标签绑定事件
方法1:写一个功能函数,在标签属性里添加onclick属性绑定
<div id="d1" onclick="changeColor(this);">点我</div>
<script>
function changeColor(ths) {
ths.style.backgroundColor="green";
}
</script>
方式2:在特定的标签属性上创建功能函数
<p>快来点我 点我 点我!!!</p>
<script>
var pEle = document.getElementsByTagName('p')[0];
pEle.onclick = function () {
alert('我来了 准备好了吧')
}
</script>
补充:事件函数中有一个固定的关键字this指代当前被操作对象本身。
事件案例
数据校验
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<p>输入用户名:
<input type="text" id="d1" >
<span style="color: red" id="username_error"></span>
</p>
<p>输入密码:
<input type="text" id="d2">
<span style="color: #ff0000" id="password_error"></span>
</p>
<button id="btn">提交</button>
<script>
var pd1Ele=document.getElementById('d1')
var pd2Ele=document.getElementById('d2')
var btnEle=document.getElementById('btn')
btnEle.onclick=function (){
let spanEle1=document.getElementById('username_error')
let spanEle2=document.getElementById('password_error')
if (pd1Ele.value === 'jason'){
spanEle1.innerText='用户名不可以是jason'
}
if (pd2Ele.value === '123') {
spanEle2.innerText='密码不可以是123'
}
}
</script>
</body>
</html>
搜索框案例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<p>
搜索框:<input type="text" value="默认的搜索内容" id="ssk">
</p>
<script>
let inputEle = document.getElementById('ssk')
// 绑定一个聚焦事件
inputEle.onfocus = function () {
inputEle.value = ''
}
// 绑定一个失焦事件
inputEle.onblur = function () {
inputEle.value = 'python编程'
}
</script>
</body>
</html>
省市联动
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<p>省市:
<select name="" id="pro">
</select>
</p>
<p>市区:
<select name="" id="city">
</select>
</p>
<script>
let proEle = document.getElementById('pro');
let cityEle = document.getElementById('city');
// 1.自定义数据(以后有现成的组件实现)
let data = {
"河北": ["廊坊", "邯郸"],
"北京": ["朝阳区", "海淀区"],
"山东": ["威海市", "烟台市"],
"安徽": ["合肥市", "芜湖市"],
"上海": ["静安", "黄埔"],
"深圳": ["龙湖", "罗湖"]
};
// 2.获取自定义对象中所有的key并添加到省市下拉框中
for (let proVal in data) {
// 2.1.创建option标签
opEle = document.createElement('option');
opEle.innerText = proVal;
opEle.value = proVal
// 2.2.添加到第一个下拉框中
proEle.append(opEle)
}
// 3.文本域变化事件
proEle.onchange = function () {
// 3.0.先清空市区下拉框中的内容
cityEle.innerHTML = '';
let currentPro = this.value;
let currentCityList = data[currentPro];
// 3.1.循环获取市区数据
for (let i=0;i<currentCityList.length;i++){
// 3.2.创建option标签
opEle = document.createElement('option');
opEle.innerText = currentCityList[i];
opEle.value = currentCityList[i]
// 2.2.添加到第一个下拉框中
cityEle.append(opEle)
}
}
</script>
</body>
</html>
jQuery简介
jQuery是一个轻量级的、兼容多浏览器的JavaScript库。
jQuery使用户能够更方便地处理HTML Document、Events、实现动画效果、方便地进行Ajax交互,能够极大地简化JavaScript编程。它的宗旨就是:“Write less, do more.“
下载使用:
下载地址:https://jquery.com/
jQuery必须先导入才可以使用(html页面上得写导入语句>>>:容易忘)
jQuery本身就是一个js文件,里面写了一些js代码而已。
导入方式
1.本地jQuery文件
不会收到网络影响:直接在本地导入,在html页面上得写导入语句。
2.CDN加速服务
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
需要确保有互联网:min.js压缩之后的文件,容量更小;.js没有压缩的文件,容量稍大。
基本使用:将页面上的两个p标签文本内容一个变成红色 一个变成绿色
// 原生的js代码
let p1Ele = document.getElementsByTagName('p')[0]
let p2Ele = document.getElementsByTagName('p')[1]
p1Ele.style.color = 'red'
p2Ele.style.color = 'green'
// jQuery代码
$('#d1').css('color','red').next().css('color','green')
jQuery查找标签
基本选择器
| 基本选择器 | 说明 |
|---|---|
| $('#d1') | id选择器 |
| $('.c1') | class选择器 |
| $('p') | 标签选择器 |
组合案例:
$('div#d1') // 查找所有div标签下id为d的div
层级选择器
| 层级选择器 | 说明 |
|---|---|
| $("x y") | x的所有后代y(子子孙孙) |
| $("x > y") | x的所有儿子y(儿子) |
| $("x + y") | 找到所有紧挨在x后面的y |
| $("x ~ y") | x之后所有的兄弟y |
基本筛选器
| 基本筛选器 | 描述 |
|---|---|
| :first | 第一个 |
| :last | 最后一个 |
| :eq(index) | 索引index位置的那个元素 |
| :even | 匹配所有索引值为偶数的元素,从 0 开始计数 |
| :odd | 匹配所有索引值为奇数的元素,从 0 开始计数 |
| :gt(index) | 匹配所有大于给定索引值的元素 |
| lt(index) | 匹配所有小于给定索引值的元素 |
| :not(元素选择器) | 移除所有满足not条件的标签 |
| :has(元素选择器) | 选取所有包含一个或多个标签在其内的标签(指的是从后代元素找) |
案例:
$("div:has(h1)")// 找到所有后代中有h1标签的div标签
$("div:has(.c1)")// 找到所有后代中有c1样式类的div标签
$("li:not(.c1)")// 找到所有不包含c1样式类的li标签
$("li:not(:has(a))")// 找到所有后代中不含a标签的li标签
属性选择器
| 属性选 | 说明 |
|---|---|
| $('[name]') | 查找有name属性的标签 |
| $('[name="jason"]') | 查找name属性为jason的标签 |
| $('div[name="jason"]') | 查找name属性为jason的div标签 |
表单筛选器:专门针对form表单内的标签
| 原写法 | 简化 |
|---|---|
| $('input[type="text"]') | $(':text') |
| $('[checked="checked"]') | $(':checked') 会将option也找到 |
筛选器方法
| 方法 | 说明 |
|---|---|
| $().next() | 同级别往下查找一个 |
| $().nextAll() | 同级别往下查找所有 |
| $().nextUntil("选择器") | 同级别往下查找所有,直到满足选择器条件 |
| $().prev() | 同级别往上查找一个 |
| $().prevAll() | 同级别往上查找所有 |
| $().prevUntil("选择器") | 同级别往上查找所有,直到满足选择器条件 |
| $().parent() | 查找一个父标签 |
| $().parents() | 查找所有父标签(一直向上一个级别查找) |
| $().parentsUntil("选择器") | 查找所有父标签,直到满足选择器条件 |
| $().children() | 查找儿子标签 |
| $().siblings() | 同级别上下所有标签(兄弟标签) |

浙公网安备 33010602011771号