2 回答

TA貢獻(xiàn)1813條經(jīng)驗(yàn) 獲得超2個(gè)贊
第一:您的函數(shù)function rememberedHovered(leitnerbox)和其他函數(shù)接受參數(shù),但您不會(huì)在懸停事件上傳遞它們<button onmouseover="didNotRememberHovered()" onmouseout="didNotRememberNotHovered()" class="btn "> Did Not Remember </button>。因?yàn)閘eitnerbox和actualLeitnerbox是全局變量——你真的不需要你的函數(shù)將它們作為參數(shù)。
第二:您沒有更改按鈕狀態(tài)的功能。這部分代碼
var header = document.getElementById("myDIV");
var btns = header.getElementsByClassName("btn");
for (var i = 0; i < leitnerbox; i++) {
btns[i].classList.add("active");
}
只會(huì)在第一次加載時(shí)起作用,但當(dāng)您將鼠標(biāo)懸停在按鈕上時(shí)不會(huì)改變?nèi)魏螙|西。所以你也需要它作為一個(gè)函數(shù)并將它放在你的 onHover 函數(shù)中。你還需要稍微改變一下這部分。由于按鈕的數(shù)量active發(fā)生變化,您將不得不以某種方式停用它們。
我希望這是您想要的功能:
var actualLeitnerbox = 4;
var leitnerbox = actualLeitnerbox;
function rememberedHovered() {
leitnerbox += 1;
activate();
}
function rememberedNotHovered() {
leitnerbox = actualLeitnerbox;
activate();
}
function didNotRememberHovered() {
leitnerbox = 1;
activate();
}
function didNotRememberNotHovered() {
leitnerbox = actualLeitnerbox;
activate();
}
function activate(){
var header = document.getElementById("myDIV");
var btns = header.getElementsByClassName("btn");
for(let i = 0; i < btns.length; i++){
btns[i].classList.remove("active");
}
for (var i = 0; i < leitnerbox; i++) {
btns[i].classList.add("active");
}
}
activate();
.btn {
border: none;
outline: none;
padding: 10px 16px;
background-color: #f1f1f1;
cursor: pointer;
font-size: 18px;
}
/* Style the active class, and buttons on mouse-over */
.active, .btn:hover {
background-color: #666;
color: white;
}
<button onmouseover="rememberedHovered()" onmouseout="rememberedNotHovered()" class="btn "> Remembered </button>
<button onmouseover="didNotRememberHovered()" onmouseout="didNotRememberNotHovered()" class="btn "> Did Not Remember </button>
<div id="myDIV">
<button class="btn">1</button>
<button class="btn">2</button>
<button class="btn">3</button>
<button class="btn">4</button>
<button class="btn">5</button>
<button class="btn">6</button>
<button class="btn">7</button>
</div>

TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊
你應(yīng)該讓每個(gè)功能做特定的任務(wù)
此外,在這種情況leitnerbox下actualLeitnerbox是undefined,因?yàn)樵?HTML 中,您調(diào)用這些函數(shù)時(shí)不帶任何參數(shù)
function rememberedHovered(leitnerbox) {
// ...
}
function rememberedNotHovered(leitnerbox, actualLeitnerbox) {
// ...
}
function didNotRememberHovered(leitnerbox) {
// ...
}
function didNotRememberNotHovered(leitnerbox, actualLeitnerbox) {
// ...
}
下面的片段應(yīng)該可以幫助你
var actualLeitnerbox = 4;
var leitnerbox = actualLeitnerbox;
var header = document.getElementById("myDIV");
var btns = header.getElementsByClassName("btn");
function hover(i) {
btns[i].classList.add("active");
}
function unhover(i) {
btns[i].classList.remove("active");
}
function hoverAll() {
for (var i = 0; i < actualLeitnerbox; i++) hover(i)
}
function unhoverAll() {
for (var i = 0; i < actualLeitnerbox; i++) unhover(i)
}
function rememberedHovered() {
hover(actualLeitnerbox)
}
function rememberedNotHovered() {
unhover(actualLeitnerbox)
}
function didNotRememberHovered() {
unhoverAll()
hover(0)
}
function didNotRememberNotHovered() {
unhoverAll()
hoverAll()
}
for (var i = 0; i < leitnerbox; i++) {
btns[i].classList.add("active");
}
/* Style the buttons */
.btn {
border: none;
outline: none;
padding: 10px 16px;
background-color: #f1f1f1;
cursor: pointer;
font-size: 18px;
}
/* Style the active class, and buttons on mouse-over */
.active,
.btn:hover {
background-color: #666;
color: white;
}
#myDIV {
margin-top: 5rem;
}
<button onmouseover="rememberedHovered()" onmouseout="rememberedNotHovered()" class="btn "> Remembered </button>
<button onmouseover="didNotRememberHovered()" onmouseout="didNotRememberNotHovered()" class="btn "> Did Not Remember </button>
<div id="myDIV">
<button class="btn">1</button>
<button class="btn">2</button>
<button class="btn">3</button>
<button class="btn">4</button>
<button class="btn">5</button>
<button class="btn">6</button>
<button class="btn">7</button>
</div>
添加回答
舉報(bào)