JavaScript - 练习
编辑
49
2025-01-15
>切换照片
<!DOCTYPE html>
<html lang="zh">
<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>
.outer {
width: 640px;
margin: 50px auto;
text-align: center;
}
</style>
<script>
window.onload = function () {
/*
点击按钮切换图片
*/
// 获取info
const info = document.getElementById("info")
// 获取到图片
const img = document.getElementsByTagName("img")[0]
// 获取两个按钮
const prev = document.getElementById("prev")
const next = document.getElementById("next")
// 创建一个数组来存储图片的路径
const imgArr = [
"./images/1.png",
"./images/2.png",
"./images/3.png",
"./images/4.png",
"./images/5.png",
]
// 创建一个变量记录当前图片的索引
let current = 0
// 设置info元素的内容,显示总图片数和当前图片索引
info.textContent = `总共 ${imgArr.length} 张图片,当前第 ${current + 1} 张`
// 上一张
prev.onclick = function () {
current--
// 如果当前图片索引小于0,则设置为最后一张图片的索引
if (current < 0) {
// current = 0
current = imgArr.length - 1
}
// 更新img元素的src属性,显示当前图片
img.src = imgArr[current]
// 更新info元素的内容,显示总图片数和当前图片索引
info.textContent = `总共 ${imgArr.length} 张图片,当前第 ${current + 1} 张`
}
// 点击next按钮后,切换图片
next.onclick = function () {
current++
if (current > imgArr.length - 1) {
// current = imgArr.length - 1
current = 0
}
// 切换图片 --> 2.png 就是修改img的src属性
img.src = imgArr[current]
info.textContent = `总共 ${imgArr.length} 张图片,当前第 ${current + 1} 张`
}
}
</script>
</head>
<body>
<div class="outer">
<p id="info">
总共n张图片,当前第m张
</p>
<div class="img-wrapper">
<img src="./images/1.png" alt="这是一个图片" />
</div>
<div class="btn-wrapper">
<button id="prev">上一张</button>
<button id="next">下一张</button>
</div>
</div>
</body>
</html>
>选择框
// html
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"
name="viewport">
<meta content="ie=edge" http-equiv="X-UA-Compatible">
<title>Document</title>
</head>
<body>
<div>
<form action="#">
<div>
请选择你的爱好:
<input id="check-all" type="checkbox"/> 全选
</div>
<div>
<input name="hobby" type="checkbox" value="乒乓球"/> 乒乓球
<input name="hobby" type="checkbox" value="篮球"/> 篮球
<input name="hobby" type="checkbox" value="羽毛球"/> 羽毛球
<input name="hobby" type="checkbox" value="足球"/> 足球
</div>
<div>
<button id="all" type="button">全选</button>
<button id="no" type="button">取消</button>
<button id="reverse" type="button">反选</button>
<button id="send" type="button">提交</button>
</div>
</form>
</div>
<script src="main.js"></script>
</body>
</html>
// main.js
const hobby = document.getElementsByName("hobby")
const allBtn = document.getElementById('all')
allBtn.onclick = function () {
for (let i = 0; i < hobby.length; i++) {
hobby[i].checked = true
}
checkBtn.checked = true
}
const noBtn = document.getElementById('no')
noBtn.onclick = function () {
for (let i = 0; i < hobby.length; i++) {
hobby[i].checked = false
}
checkBtn.checked = false
}
const reverseBtn = document.getElementById('reverse')
reverseBtn.onclick = function () {
for (let i = 0; i < hobby.length; i++) {
hobby[i].checked = !hobby[i].checked
}
const checkedBox = document.querySelectorAll(
"[name=hobby]:checked"
)
if (hobby.length === checkedBox.length) {
checkBtn.checked = true
} else {
checkBtn.checked = false
}
}
const sendBtn = document.getElementById('send')
sendBtn.onclick = function () {
for (let i = 0; i < hobby.length; i++) {
hobby[i].checked && alert(hobby[i].value)
}
}
const checkBtn = document.getElementById('check-all')
checkBtn.onchange = function () {
for (let i = 0; i < hobby.length; i++) {
hobby[i].checked = this.checked
}
}
for (let i = 0; i < hobby.length; i++) {
hobby[i].onchange = function () {
const checkedBox = document.querySelectorAll(
"[name=hobby]:checked"
)
if (hobby.length === checkedBox.length) {
checkBtn.checked = true
} else {
checkBtn.checked = false
}
}
}
>自定义员工信息
// html
<!DOCTYPE html>
<html lang="zh">
<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>
.outer {
width: 400px;
margin: 100px auto;
text-align: center;
}
table {
width: 400px;
border-collapse: collapse;
margin-bottom: 20px;
}
td,
th {
border: 1px black solid;
padding: 10px 0;
}
form div {
margin: 10px 0;
}
</style>
</head>
<body>
<div class="outer">
<table>
<tbody>
<tr>
<th>姓名</th>
<th>邮件</th>
<th>薪资</th>
<th>操作</th>
</tr>
<tr>
<td>孙悟空</td>
<td>swk@hgs.com</td>
<td>10000</td>
<td><a href="javascript:;">删除</a></td>
</tr>
<tr>
<td>猪八戒</td>
<td>zbj@glz.com</td>
<td>8000</td>
<td><a href="javascript:;">删除</a></td>
</tr>
<tr>
<td>沙和尚</td>
<td>shs@lsh.com</td>
<td>6000</td>
<td><a href="javascript:;">删除</a></td>
</tr>
</tbody>
</table>
<form action="#">
<div>
<label for="name">姓名</label>
<input type="text" id="name" />
</div>
<div>
<label for="email">邮件</label>
<input type="email" id="email" />
</div>
<div>
<label for="salary">薪资</label>
<input type="number" id="salary" />
</div>
<button id="btn" type="button">添加</button>
</form>
</div>
</body>
</html>
// main.js
document.addEventListener("DOMContentLoaded", function () {
/*
点击删除超链接后,删除当前的员工信息
*/
function delEmpHandler() {
// 本练习中的超链接,我们是不希望发生跳转,但是跳转行为是超链接的默认行为
// 只要点击超链接就会触发页面的跳转,事件中可以通过取消默认行为来阻止超链接的跳转
// 使用return false来取消默认行为,只在 xxx.xxx = function(){}这种形式绑定的事件中才适用
// return false
// 删除当前员工 删除当前超链接所在的tr
// console.log(this)
// this表示当前点击的超链接
const tr = this.parentNode.parentNode;
// 获取要删除的员工的姓名
// const empName = tr.getElementsByTagName("td")[0].textContent
const empName = tr.firstElementChild.textContent;
// 弹出一个友好的提示
if (confirm("确认要删除【" + empName + "】吗?")) {
// 删除tr
tr.remove();
}
}
// 获取所有的超链接
const links = document.links;
// 为他们绑定单级响应函数
for (let i = 0; i < links.length; i++) {
links[i].onclick = delEmpHandler;
// links[i].addEventListener("click", function(){
// alert(123)
// return false // 无法取消默认行为
// })
}
/*
点击按钮后,将用户的信息插入到表格中
*/
// 获取tbody
const tbody = document.querySelector("tbody");
const btn = document.getElementById("btn");
btn.onclick = function () {
// 获取用户输入的数据
const name = document.getElementById("name").value;
const email = document.getElementById("email").value;
const salary = document.getElementById("salary").value;
// 将获取到的数据设置DOM对象
/*
<tr>
<td>孙悟空</td>
<td>swk@hgs.com</td>
<td>10000</td>
<td><a href="javascript:;">删除</a></td>
</tr>
*/
// 创建元素
const tr = document.createElement("tr");
// 创建td
const nameTd = document.createElement("td");
const emailTd = document.createElement("td");
const salaryTd = document.createElement("td");
// 添加文本
nameTd.innerText = name;
emailTd.textContent = email;
salaryTd.textContent = salary;
// 将三个td添加到tr中
tr.appendChild(nameTd);
tr.appendChild(emailTd);
tr.appendChild(salaryTd);
tr.insertAdjacentHTML(
"beforeend",
'<td><a href="javascript:;">删除</a></td>'
);
tbody.appendChild(tr);
// 由于上边的超链接是新添加的,所以它的上边并没有绑定单级响应函数,所以新添加的员工无法删除
// 解决方式:为新添加的超链接单独绑定响应函数
links[links.length - 1].onclick = delEmpHandler;
};
});
- 0
- 0
-
分享