Итак, есть кое-что, к чему я хотел бы обратиться, и если я веду вас по неверному пути, пожалуйста, дайте мне знать, и я обновлю свой ответ.
1) в HTML onclick
атрибут для кнопки традиционно используется для вызова некоторой функции JavaScript ... onclick="test()"
вызовет function test(){...}
в вашем JS.Использование хеш-идентификатора на самом деле ничего не дает (в тегах привязки атрибут href + хеш-идентификатор позволяет браузеру переходить к разделу на странице <a href="#content-section">
)
2) Объявление вашей функции var displayOption = function toggleOption()
может быть действительным, но неясно, как читать (по крайней мере, для меня).Как называется ваша функция?toggleOption () displayOption ()?
2b) Кроме того, нет ничего, что вызывало бы вашу функцию, чтобы фактически запустить вещи.У вас весь код закручен в displayOption (), но нет ничего, что вызывало бы его для запуска вашего вложенного кода.
3) .click()
в традиционном JavaScript просто используется как метод для вызова действия click - этоне верный / ложный тест.Если вы сделали option1.click()
, чтобы программно щелкнуть по вашему элементу option1, например, щелчком мыши)
3b) Для прослушивания события щелчка мой любимый подход - element.addEventListener('click', function(){ .. } )
- это установит ваш JavaScript для прослушивания, если/ когда нажимается эта кнопка конкретного элемента, а затем выполняется соответствующий код https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener
4) Насколько мне известно, .getElementByClass()
не существует - однако существует .getElementsByClassName()
, что важно отметитьон вернет узел список https://developer.mozilla.org/en-US/docs/Web/API/Element/getElementsByClassName
4b) Поскольку вы нацеливаетесь на конкретные элементы, вы можете назначить им идентификаторы, а затем использовать .getElementById()
, чтобы подключить их к вашему JavaScript https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementById, который будет возвращать только первый соответствующий результат.
var option1yes = document.getElementById('option1yes')
var option1no = document.getElementById('option1no')
option1yes.addEventListener('click', function(){
option1no.style.display = 'none';
});
<p>Do you want to go for a swim?</p>
<button id="option1yes">Yes</button>
<button id="option1no">No</button>
<p>Let's go to the water park! There's a water park around the corner from you.</p>
<button id="option2-yes">Sounds Fun</button>
<button id="option2-no">I want to do something else</button>
<p>Let's go to the mall! There's a mall 15 miles away from you.</p>
<button id="option3-yes">Sounds Fun</button>
<button id="option3-no">I want to do something else</button>
ОБНОВЛЕНИЕ
Хорошо, чтобы скрыть и показать разделы веб-страницы, есть пара первых шагов, на которых можно основываться.предыдущие пункты здесь:)
1) Вам нужно будет изолировать разделы, которые вы хотите скрыть / показать в своих собственных контейнерах - обычно разработчики используют для этого div
s.
1b) в этом примере я поместил последующие вопросы в div
s и дал им оба уникальных идентификатора, чтобы мы могли легче ориентировать их в JavaScript.У них также есть тот же класс CSS .hidden
, который обсуждается в пункте №2:)
2) Ваши разделы должны начинаться скрытыми, это можно сделать с некоторыми CSS
2b) в этомНапример, я создал класс CSS с именем .hidden
, добавив его к элементу, значение CSS для него будет установлено на display: hidden;
(сняв его с помощью JavaScript, элемент вернется к своему отображаемому значению по умолчанию)
2c) вы можете использовать element.className=""
https://developer.mozilla.org/en-US/docs/Web/API/Element/className или element.classList
https://developer.mozilla.org/en-US/docs/Web/API/Element/classList - мне нравится .className
, но это только то, к чему я привык.
3) Чтобы убедиться, что пользователи могут изменять выбор, JavaScript удаляет класс .hidden
из своей предполагаемой цели, но добавляет его обратно в другие разделы div, которые необходимо скрыть.
var btnYes = document.getElementById('option1yes');
var btnNo = document.getElementById('option1no');
var optYes = document.getElementById('option1-yes');
var optNo = document.getElementById('option1-no');
btnYes.addEventListener('click', function(){
optYes.className = '';
optNo.className = 'hidden';
});
btnNo.addEventListener('click', function(){
optNo.className = '';
optYes.className = 'hidden';
});
.hidden{ display: none; }
<p>Do you want to go for a swim?</p>
<button id="option1yes">Yes</button>
<button id="option1no">No</button>
<div id="option1-yes" class="hidden">
<p>Let's go to the water park! There's a water park around the corner from you.</p>
<button id="option2yes">Sounds Fun</button>
<button id="option2no">I want to do something else</button>
</div>
<div id="option1-no" class="hidden">
<p>Let's go to the mall! There's a mall 15 miles away from you.</p>
<button id="option3yes">Sounds Fun</button>
<button id="option3no">I want to do something else</button>
</div>