Как мне изменить, какая форма отображается в HTML-форме при нажатии кнопки?

#javascript #html #forms

#javascript #HTML #формы

Вопрос:

Я хотел бы сделать так, чтобы при нажатии кнопки вычисления в моей форме ввода отображение автоматически менялось на форму сводки. Прямо сейчас у меня есть работающая кнопка выбора, которую я могу использовать для переключения между каждой из форм. Я все еще хочу иметь возможность перемещаться между тремя формами, я просто хочу, чтобы это приводило меня к сводке при нажатии кнопки рассчитать. Может ли кто-нибудь помочь мне придумать что-нибудь, что можно добавить в мою функцию вычисления выполнения, чтобы добавить эту возможность? (Пожалуйста, без jquery). Прямо сейчас мой код выглядит следующим образом:

HTML:

 <select id="form-selector">
  <option value="_" selected disabled>pick one !</option>
  <option value="Input">Input</option>
  <option value="Output">Output</option>
  <option value="Summary">Summary</option>
</select>

<div id="my-forms">
  <form name="Input">
    <!-- All of the input boxes and a "Calculate" button -->
    <h4> form Input</h4>
  </form>
  <form name="Output">
    <!-- All of the output boxes -->
    <h4> form Output</h4>
  </form>
  <form name="Summary">
    <!-- A few more output boxes -->
    <h4> form Summary</h4>
  </form>
</div>
  

JavaScript: Существует также функция выполнения вычислений, которая выполняет все вычисления при нажатии кнопки рассчитать.

JavaScript:

 const formSelect = document.getElementById('form-selector'),   
myForms    = document.getElementById('my-forms');
formSelect.oninput=()=>{ myForms.className = `f-${formSelect.value}` }
  

CSS:

 #my-forms form { display:none }
#my-forms.f-Input form[name=Input],
#my-forms.f-Output form[name=Output],
#my-forms.f-Summary form[name=Summary] { display:block }
  

Комментарии:

1. не ясно или попробуйте использовать фрагменты

Ответ №1:

Это должно выполнить свою работу:

 const myForms = document.getElementById('my-forms');
document.getElementById('form-selector').oninput=ev=>
  myForms.className = `f-${ev.target.value}`;
document.querySelector('button').onclick=ev=>
  (myForms.className = "f-Summary",false)  
 #my-forms form { display:none }
#my-forms.f-Input form[name=Input],
#my-forms.f-Output form[name=Output],
#my-forms.f-Summary form[name=Summary] { display:block }  
 <select id="form-selector">
  <option value="_" selected disabled>pick one !</option>
  <option value="Input">Input</option>
  <option value="Output">Output</option>
  <option value="Summary">Summary</option>
</select>

<div id="my-forms">
  <form name="Input">
    <!-- All of the input boxes and a "Calculate" button -->
    <h4> form Input</h4>
    <button>calculate</button>
  </form>
  <form name="Output">
    <!-- All of the output boxes -->
    <h4> form Output</h4>
  </form>
  <form name="Summary">
    <!-- A few more output boxes -->
    <h4> form Summary</h4>
  </form>
</div>  

.oninput Обработчик событий заботится об <select> элементе, .onclick обработчик событий вступает во владение при нажатии кнопки: он устанавливает класс элемента #my-forms div на «f-Summary», что приводит к отображению формы summary внутри него.

Комментарии:

1. Я думаю, что это правильное решение, но в моей среде РАЗРАБОТКИ «.value» выдается предупреждение «неразрешенное значение переменной», а второе использование «=ev=>» отображается как неиспользуемый параметр. Есть какие-нибудь идеи, что происходит не так?