我想制作一个 'Spoiler Alert' 按钮 (2)
I want to make a 'Spoiler Alert' button (2)
首先,感谢你们,我得到了我想要的。
但是,我又想到了一个问题。
let btn = document.getElementById("change");
let spoilSpan = document.getElementById("spoiled");
btn.addEventListener("click", spoilerAlert);
function spoilerAlert() {
spoilSpan.classList.toggle("show");
}
.spoiler {
display: inline-block;
background: #000;
padding: 1px;
}
.show {
display: inline-block;
background: none;
}
<button id="change">Spoiler Alert</button>
<br><br>
<span>Not Spoiler</span>
<br><br>
<span class='spoiler' id='spoiled'>
Spoiler
</span><br><br>
<span>Not Spoiler</span>
<br><br>
<span class='spoiler' id='spoiled'>
Spoiler
</span>
我想让它一键工作。
不过,最后一个“剧透”不行。
我该怎么办?
抱歉什么都不知道
具有相同 id
的多个元素会使您的 HTML 无效。在这种情况下,getElementById
将 return 仅匹配第一个不是您需要的元素。
改为这样写:
function spoilerAlert() {
Array.from(document.getElementsByClassName('spoiler')).forEach(x => {
x.classList.toggle("show");
});
}
您的代码段修复如下:
let btn = document.getElementById("change");
let spoilSpan = document.getElementById("spoiled");
btn.addEventListener("click", spoilerAlert);
function spoilerAlert() {
Array.from(document.getElementsByClassName('spoiler')).forEach(x => {
x.classList.toggle("show");
});
}
.spoiler {
display: inline-block;
background: #000;
padding: 1px;
}
.show {
display: inline-block;
background: none;
}
<button id="change">Spoiler Alert</button>
<br><br>
<span>Not Spoiler</span>
<br><br>
<span class='spoiler' id='spoiled'>
Spoiler
</span><br><br>
<span>Not Spoiler</span>
<br><br>
<span class='spoiler' id='spoiled'>
Spoiler
</span>
首先,感谢你们,我得到了我想要的。 但是,我又想到了一个问题。
let btn = document.getElementById("change");
let spoilSpan = document.getElementById("spoiled");
btn.addEventListener("click", spoilerAlert);
function spoilerAlert() {
spoilSpan.classList.toggle("show");
}
.spoiler {
display: inline-block;
background: #000;
padding: 1px;
}
.show {
display: inline-block;
background: none;
}
<button id="change">Spoiler Alert</button>
<br><br>
<span>Not Spoiler</span>
<br><br>
<span class='spoiler' id='spoiled'>
Spoiler
</span><br><br>
<span>Not Spoiler</span>
<br><br>
<span class='spoiler' id='spoiled'>
Spoiler
</span>
我想让它一键工作。 不过,最后一个“剧透”不行。
我该怎么办?
抱歉什么都不知道
具有相同 id
的多个元素会使您的 HTML 无效。在这种情况下,getElementById
将 return 仅匹配第一个不是您需要的元素。
改为这样写:
function spoilerAlert() {
Array.from(document.getElementsByClassName('spoiler')).forEach(x => {
x.classList.toggle("show");
});
}
您的代码段修复如下:
let btn = document.getElementById("change");
let spoilSpan = document.getElementById("spoiled");
btn.addEventListener("click", spoilerAlert);
function spoilerAlert() {
Array.from(document.getElementsByClassName('spoiler')).forEach(x => {
x.classList.toggle("show");
});
}
.spoiler {
display: inline-block;
background: #000;
padding: 1px;
}
.show {
display: inline-block;
background: none;
}
<button id="change">Spoiler Alert</button>
<br><br>
<span>Not Spoiler</span>
<br><br>
<span class='spoiler' id='spoiled'>
Spoiler
</span><br><br>
<span>Not Spoiler</span>
<br><br>
<span class='spoiler' id='spoiled'>
Spoiler
</span>