У меня есть кнопка:
<button id="a" onclick="Foo()">Button A</button>
Когда я нажимаю эту кнопку в первый раз, я хочу, чтобы он выполнил Foo (что он делает правильно):
function Foo() {
document.getElementById("a").onclick = Bar();
}
Что я хочу сделать, когда я нажимаю кнопку в первый раз, это изменить функцию onclick от Foo()
до Bar()
. До сих пор мне удалось достичь бесконечного цикла или вообще не иметь никаких изменений. Bar()
будет выглядеть примерно так:
function Bar() {
document.getElementById("a").onclick = Foo();
}
Таким образом, нажатие этой кнопки просто чередует вызвавшую функцию. Как я могу заставить это работать? В качестве альтернативы, какой лучший способ показать/скрыть полный текст сообщения? Сначала он запускается, и я предоставляю кнопку "видеть полный текст". Но когда я нажимаю эту кнопку, я хочу, чтобы пользователи могли снова нажать кнопку, чтобы удалить длинную версию текста.
Здесь полный код, если он помогает:
function ShowError(id) {
document.getElementById(id).className = document.getElementById(id).className.replace(/\bheight_limited\b/, '');
document.getElementById(id+"Text").className = document.getElementById(id+"Text").className.replace(/\bheight_limited\b/, '');
document.getElementById(id+"Button").innerHTML = "HIDE FULL ERROR";
document.getElementById(id+"Button").onclick = HideError(id);
}
function HideError(id) {
document.getElementById(id).className += " height_limited";
document.getElementById(id+"Text").className += " height_limited";
document.getElementById(id+"Button").innerHTML = "SHOW FULL ERROR";
document.getElementById(id+"Button").onclick = "ShowError(id)";
}