点击元素
click on Element
我有一个问题,我有一个图库,当你点击一张图片时,图片想变大,如果你再次点击,图片又要变小,但是没有用,可以吗有人帮我修改我的代码吗?
<!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="content">
<img class="pic" src="https://picsum.photos/id/200/200/200" alt="">
<img class="pic" src="https://picsum.photos/id/400/200/200" alt="">
<img class="pic" src="https://picsum.photos/id/201/200/200" alt="">
<img class="pic" src="https://picsum.photos/id/450/200/200" alt="">
</div>
<script>
var img=document.getElementsByClassName("pic");
for(i=0;i<img.length;i++){
img[i].addEventListener("click",(event)=>{
var evento=event.target;
evento.style.width="700px"
})
}
img[i].addEventListener("click",(eventen)=>{
var eventen=eventen.target;
eventen.style.width="200px"
})
</script>
</body>
</html>
您不能在同一张图片上添加 2 个相同的点击处理程序,因此在您的点击处理程序中,您需要检查宽度是否已经是 700 像素,如果是,则将其设置为 200,否则将其设置为 700
<!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="content">
<img class="pic" src="https://picsum.photos/id/200/200/200" alt="">
<img class="pic" src="https://picsum.photos/id/400/200/200" alt="">
<img class="pic" src="https://picsum.photos/id/201/200/200" alt="">
<img class="pic" src="https://picsum.photos/id/450/200/200" alt="">
</div>
<script>
var img = document.getElementsByClassName("pic");
for (i = 0; i < img.length; i++) {
img[i].addEventListener("click", (event) => {
var evento = event.target;
Object.values(img).forEach((im) => im.style.width = "200px")
evento.style.width = "700px"
})
}
</script>
</body>
</html>
您可以使用 querySelectorAll 并在点击图片时切换 class
.pic-large {
width: 700px;
}
<!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="content">
<img class="pic" src="https://picsum.photos/id/200/200/200" alt="">
<img class="pic" src="https://picsum.photos/id/400/200/200" alt="">
<img class="pic" src="https://picsum.photos/id/201/200/200" alt="">
<img class="pic" src="https://picsum.photos/id/450/200/200" alt="">
</div>
<script>
let img = document.querySelectorAll(".pic");
img.forEach(i => {
i.addEventListener("click", (event)=> {
let cur = event.target.classList.contains('pic-large')
img.forEach(i => i.classList.remove('pic-large'))
cur ? event.target.classList.remove('pic-large') :
event.target.classList.add('pic-large')
})
})
/*let img = document.getElementsByClassName("pic");
for(let i = 0; i < img.length; i++){
img[i].addEventListener("click", (event) => {
let cur = event.target.classList.contains('pic-large');
for(let i = 0; i < img.length; i++){
img[i].classList.remove('pic-large')
}
cur ? event.target.classList.remove('pic-large') : event.target.classList.add('pic-large')
})
}*/
</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 id = content>
<img class = pic src = https://picsum.photos/id/200/200/200>
<img class = pic src = https://picsum.photos/id/400/200/200>
<img class = pic src = https://picsum.photos/id/201/200/200>
<img class = pic src = https://picsum.photos/id/450/200/200>
</div>
<script>
let images = document.getElementsByClassName("pic")
for (image of images) {
image.addEventListener("click", event => {
let evento = event.target
if (evento.style.width == "700px") evento.style.width = "200px"
else evento.style.width = "700px"
})
}
</script>
</body>
</html>
有事件委托...
const AllPics = document.querySelectorAll('#content img.pic')
document.querySelector('#content').onclick = evt =>
{
if (!evt.target.matches('img.pic')) return
if ( evt.target.classList.toggle('big700') )
AllPics.forEach(img=>
{
if (img != evt.target)
img.classList.toggle('big700',false)
})
}
.big700 { width:700px }
#content img.pic { cursor : pointer }
<div id="content">
<img class="pic" src="https://picsum.photos/id/200/200/200" alt="">
<img class="pic" src="https://picsum.photos/id/400/200/200" alt="">
<img class="pic" src="https://picsum.photos/id/201/200/200" alt="">
<img class="pic" src="https://picsum.photos/id/450/200/200" alt="">
</div>
我有一个问题,我有一个图库,当你点击一张图片时,图片想变大,如果你再次点击,图片又要变小,但是没有用,可以吗有人帮我修改我的代码吗?
<!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="content">
<img class="pic" src="https://picsum.photos/id/200/200/200" alt="">
<img class="pic" src="https://picsum.photos/id/400/200/200" alt="">
<img class="pic" src="https://picsum.photos/id/201/200/200" alt="">
<img class="pic" src="https://picsum.photos/id/450/200/200" alt="">
</div>
<script>
var img=document.getElementsByClassName("pic");
for(i=0;i<img.length;i++){
img[i].addEventListener("click",(event)=>{
var evento=event.target;
evento.style.width="700px"
})
}
img[i].addEventListener("click",(eventen)=>{
var eventen=eventen.target;
eventen.style.width="200px"
})
</script>
</body>
</html>
您不能在同一张图片上添加 2 个相同的点击处理程序,因此在您的点击处理程序中,您需要检查宽度是否已经是 700 像素,如果是,则将其设置为 200,否则将其设置为 700
<!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="content">
<img class="pic" src="https://picsum.photos/id/200/200/200" alt="">
<img class="pic" src="https://picsum.photos/id/400/200/200" alt="">
<img class="pic" src="https://picsum.photos/id/201/200/200" alt="">
<img class="pic" src="https://picsum.photos/id/450/200/200" alt="">
</div>
<script>
var img = document.getElementsByClassName("pic");
for (i = 0; i < img.length; i++) {
img[i].addEventListener("click", (event) => {
var evento = event.target;
Object.values(img).forEach((im) => im.style.width = "200px")
evento.style.width = "700px"
})
}
</script>
</body>
</html>
您可以使用 querySelectorAll 并在点击图片时切换 class
.pic-large {
width: 700px;
}
<!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="content">
<img class="pic" src="https://picsum.photos/id/200/200/200" alt="">
<img class="pic" src="https://picsum.photos/id/400/200/200" alt="">
<img class="pic" src="https://picsum.photos/id/201/200/200" alt="">
<img class="pic" src="https://picsum.photos/id/450/200/200" alt="">
</div>
<script>
let img = document.querySelectorAll(".pic");
img.forEach(i => {
i.addEventListener("click", (event)=> {
let cur = event.target.classList.contains('pic-large')
img.forEach(i => i.classList.remove('pic-large'))
cur ? event.target.classList.remove('pic-large') :
event.target.classList.add('pic-large')
})
})
/*let img = document.getElementsByClassName("pic");
for(let i = 0; i < img.length; i++){
img[i].addEventListener("click", (event) => {
let cur = event.target.classList.contains('pic-large');
for(let i = 0; i < img.length; i++){
img[i].classList.remove('pic-large')
}
cur ? event.target.classList.remove('pic-large') : event.target.classList.add('pic-large')
})
}*/
</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 id = content>
<img class = pic src = https://picsum.photos/id/200/200/200>
<img class = pic src = https://picsum.photos/id/400/200/200>
<img class = pic src = https://picsum.photos/id/201/200/200>
<img class = pic src = https://picsum.photos/id/450/200/200>
</div>
<script>
let images = document.getElementsByClassName("pic")
for (image of images) {
image.addEventListener("click", event => {
let evento = event.target
if (evento.style.width == "700px") evento.style.width = "200px"
else evento.style.width = "700px"
})
}
</script>
</body>
</html>
有事件委托...
const AllPics = document.querySelectorAll('#content img.pic')
document.querySelector('#content').onclick = evt =>
{
if (!evt.target.matches('img.pic')) return
if ( evt.target.classList.toggle('big700') )
AllPics.forEach(img=>
{
if (img != evt.target)
img.classList.toggle('big700',false)
})
}
.big700 { width:700px }
#content img.pic { cursor : pointer }
<div id="content">
<img class="pic" src="https://picsum.photos/id/200/200/200" alt="">
<img class="pic" src="https://picsum.photos/id/400/200/200" alt="">
<img class="pic" src="https://picsum.photos/id/201/200/200" alt="">
<img class="pic" src="https://picsum.photos/id/450/200/200" alt="">
</div>