如何让 addEventListener 单击有条件地使用 hbs 中的单选按钮
How to have an addEventListener click conditional work with radio buttons in hbs
这个hbs文件只在else条件下调用js文件,从不在if条件下调用js文件。期望的结果是,如果选中男性单选按钮,则单击按钮时生成男性名称,否则单击按钮时生成女性名称。
相关 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 选项存在。您可能应该做的是根据比率按钮的值使用 JS if/else。
How to get the selected radio button’s value?
这个hbs文件只在else条件下调用js文件,从不在if条件下调用js文件。期望的结果是,如果选中男性单选按钮,则单击按钮时生成男性名称,否则单击按钮时生成女性名称。
相关 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 选项存在。您可能应该做的是根据比率按钮的值使用 JS if/else。
How to get the selected radio button’s value?