#javascript #html #css
#javascript #HTML #css
Вопрос:
У меня есть formOne
и formTwo
в опции выбора. Код JavaScript для скрытия двух форм и, если я выберу formOne
для отображения formOne
, если я выберу formTwo
для отображения formOne
и formTwo
.
function changeOptions(selectEl) {
let selectedValue = selectEl.options[selectEl.selectedIndex].value;
let subForms = document.getElementsByClassName('OLevelResult')
for (let i = 0; i < subForms.length; i = 1) {
if (selectedValue === subForms[i].name) {
subForms[i].setAttribute('style', 'display:block')
} else {
subForms[i].setAttribute('style', 'display:none')
}
}
}
<select onchange="changeOptions(this)">
<option value="form_1">1</option>
<option value="form_2">2</option>
</select>
<form class="OLevelResult" name="form_1" id="form_1" style="display:none">
THIS IS FORM 1
<!---- THIS IS FORM 1---->
</form>
<form class="OLevelResult" name="form_2" id="form_2" style="display:none">
THIS IS FORM 2
<!---- THIS IS FORM 2---->
</form>
Комментарии:
1. Я думаю, что ваш код работает нормально. С какой проблемой вы столкнулись?
2. кажется, это работает, единственное, что я рекомендую, это добавлять и удалять классы css вместо манипулирования прямыми атрибутами
3. да, работает нормально, но я хочу отображать form1 и form2 вместе, если выбрать 2
Ответ №1:
function changeOptions(selectEl) {
let subForms = document.getElementsByClassName('OLevelResult')
for (let i = 0; i < subForms.length; i = 1) {
if (selectEl === subForms[i].name) {
for(let j=i; j>-1 ;j--) {
subForms[j].classList.add("active");
}
} else {
subForms[i].classList.remove("active");
}
}
}
.OLevelResult {
display: none;
}
.OLevelResult.active {
display: block;
}
<select onchange="changeOptions(this.value)">
<option value="">select</option>
<option value="form_1">1</option>
<option value="form_2">2</option>
<option value="form_3">3</option>
<option value="form_4">4</option>
</select>
<form class="OLevelResult" name="form_1" id="form_1">
THIS IS FORM 1
<!---- THIS IS FORM 1---->
</form>
<form class="OLevelResult" name="form_2" id="form_2">
THIS IS FORM 2
<!---- THIS IS FORM 2---->
</form>
<form class="OLevelResult" name="form_3" id="form_3">
THIS IS FORM 3
<!---- THIS IS FORM 1---->
</form>
<form class="OLevelResult" name="form_4" id="form_4">
THIS IS FORM 4
<!---- THIS IS FORM 2---->
</form>
Комментарии:
1. да, работает нормально, но я хочу отобразить form1 и form 2, если выбрать 2. спасибо
2. Вы хотите, чтобы javascript был необходим? Мы можем попробовать это с помощью jQuery