Привет
Я собираюсь изменить некоторые имена переменных, чтобы об этом было легче говорить. Итак, вы начинаете с сильного
// get all elements with tag sup
let buttons = document.getElementsByTagName('sup');
//get all elements with tag i
let showables = document.getElementsByTagName('i');
Для каждого элемента buttons
мы хотим связать прослушиватель события onclick . showables
должен отвечать на эти клики. Вы пишете
//for every `button` bind this `event listener`
buttons[i].addEventListener('click', function() {
if (showable[i].style.display == "inline") {
showable[i].style.display = "none";
} else {
showable[i].style.display = "none";
};
});
}
Чтобы сделать это немного более понятным, давайте возьмем function
и дадим ему имя
let show_hide = function(i) {
if (showable[i].style.display == "inline") {
showable[i].style.display = "none";
} else {
showable[i].style.display = "none";
};
});
//for each button, bind show_hide
for(let i = 0; i < buttons.length ; i++) {
buttons[i].addEventListener('click', show_hide(i))
}
l oop там делает именно то, что вы ' буду ожидать; он связывает show_hide
с каждым button
. Что делает show_hide
?
//if the element is shown, hide it
if (showable[i].style.display == "inline") {
showable[i].style.display = "none";
//if the element is not shown, hide it
} else {
showable[i].style.display = "none";
};
, поскольку вы можете видеть, что, несмотря ни на что, show_hide
скрывает элемент! так что быстрое изменение исправит это для вас.
if (showable[i].style.display == "inline") {
showable[i].style.display = "none";
//if not shown, show
else {
**** showable[i].style.display = "inline";
};
Если сложить все вместе, это должно сработать
let show_hide = function(i) {
if (showable[i].style.display == "inline") {
showable[i].style.display = "none";
} else {
showable[i].style.display = "inline";
};
});
//for each button, bind show_hide
for(let i = 0; i < buttons.length ; i++) {
buttons[i].addEventListener('click', show_hide(i))
}
Если вы хотите, чтобы мое решение этой проблемы было бы более готовы решить эту проблему по-своему. Прокомментируйте и дайте мне знать! Надеюсь, это поможет
fin