Этот файл hbs вызывается только из файла js в условном выражении else и никогда не вызывается из файла js в условном выражении if. Желаемый результат заключается в том, что если установлен флажок мужского переключателя, мужское имя генерируется при нажатии кнопки, а женское имя генерируется при нажатии кнопки в противном случае.
Раздел соответствующего файла Handlebars:
<body>
<div class = "container">
<h1> Random Name Generator</h1>
<div class = "result"></div>
<form id = "genders">
<input type = "radio" id = "isMale" name = "gender" checked>Male</input>
<input type = "radio" id = "isFemale" name = "gender">Female</input>
</form>
<button class = "btn btn-primary" id = "generate">Generate Name</button>
</div>
<script src = "./app.js"></script>
<script src = "./app2.js"></script>
<script>
const resultDiv = document.querySelector('.result');
const generateBtn = document.querySelector('#generate');
generateBtn.addEventListener('click', () => {
{{#if isMale}}
loadRandomMaleName(resultDiv);
{{else}}
loadRandomFemaleName(resultDiv);
{{/if}}
});
</script>
</body>
Файл JavaScript для условия if:
const loadRandomMaleName = (resultDiv) => {
fetch('http://localhost:3000/random-name')
.then(response => response.json())
.then(result => {
resultDiv.classList.add('alert', 'alert-success');
resultDiv.innerHTML = `<h2>${result.male_first_name} ${result.last_name}</h2>`;
});
}
Файл JavaScript для условия else:
const loadRandomFemaleName = (resultDiv) => {
fetch('http://localhost:3000/random-name')
.then(response => response.json())
.then(result => {
resultDiv.classList.add('alert', 'alert-success');
resultDiv.innerHTML = `<h2>${result.female_first_name} ${result.last_name}</h2>`;
});
}
Я считаю, что ваша проблема в том, что handlebarsjs оценивается до того, как он будет предоставлен пользователю. Поэтому, когда использование взаимодействует со страницей, существует только опция else. Что вам, вероятно, следует сделать, так это использовать if/else с использованием JS на основе значения кнопки отношения.