摘要:在本教程中,您将学习如何使用 JavaScript 检查单选组中哪个单选按钮被选中。
JavaScript 单选按钮简介
单选按钮允许您从一组预定义的互斥选项中选择一个。要创建单选按钮,您使用<input>
元素,类型为radio
。一组单选按钮称为单选组。
要形成单选组,您对所有单选按钮使用一个共同的名称。例如
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JavaScript Radio Button</title>
</head>
<body>
<p>Select your size:</p>
<div>
<input type="radio" name="size" value="XS" id="xs">
<label for="xs">XS</label>
</div>
<div>
<input type="radio" name="size" value="S" id="s">
<label for="s">S</label>
</div>
<div>
<input type="radio" name="size" value="M" id="m">
<label for="m">M</label>
</div>
<div>
<input type="radio" name="size" value="L" id="l">
<label for="l">L</label>
</div>
<div>
<input type="radio" name="size" value="XL" id="xl">
<label for="xl">XL</label>
</div>
<div>
<input type="radio" name="size" value="XXL" id="xxl">
<label for="xxl">XXL</label>
</div>
</body>
</html>
Code language: HTML, XML (xml)
在此示例中,所有单选按钮都具有相同的名称size
,但值不同。因此,您一次只能选择一个单选按钮。
要查找选定的单选按钮,您需要执行以下步骤
- 使用 DOM 方法(例如
querySelectorAll()
方法)选择所有单选按钮。 - 获取单选按钮的
checked
属性。如果checked
属性为true
,则该单选按钮被选中;否则,它未被选中。
要了解哪个单选按钮被选中,您可以使用value
属性。例如
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JavaScript Radio Button</title>
</head>
<body>
<p>Select your size:</p>
<div>
<input type="radio" name="size" value="XS" id="xs">
<label for="xs">XS</label>
</div>
<div>
<input type="radio" name="size" value="S" id="s">
<label for="s">S</label>
</div>
<div>
<input type="radio" name="size" value="M" id="m">
<label for="m">M</label>
</div>
<div>
<input type="radio" name="size" value="L" id="l">
<label for="l">L</label>
</div>
<div>
<input type="radio" name="size" value="XL" id="xl">
<label for="xl">XL</label>
</div>
<div>
<input type="radio" name="size" value="XXL" id="xxl">
<label for="xxl">XXL</label>
</div>
<p>
<button id="btn">Show Selected Value</button>
</p>
<p id="output"></p>
<script>
const btn = document.querySelector('#btn');
const radioButtons = document.querySelectorAll('input[name="size"]');
btn.addEventListener("click", () => {
let selectedSize;
for (const radioButton of radioButtons) {
if (radioButton.checked) {
selectedSize = radioButton.value;
break;
}
}
// show the output:
output.innerText = selectedSize ? `You selected ${selectedSize}` : `You haven't selected any size`;
});
</script>
</body>
</html>
Code language: HTML, XML (xml)
工作原理。
首先,选择具有#btn
id 的按钮、具有#output
id 的输出元素以及所有名称为size
的单选按钮
const btn = document.querySelector('#btn');
const output = document.querySelector('#output');
const radioButtons = document.querySelectorAll('input[name="size"]');
Code language: JavaScript (javascript)
其次,在按钮元素上注册一个点击事件监听器
btn.addEventListener('click', () => {
});
Code language: PHP (php)
第三,遍历单选按钮并获取选中单选按钮的值
let selectedSize;
for (const radioButton of radioButtons) {
if (radioButton.checked) {
selectedSize = radioButton.value;
break;
}
}
Code language: JavaScript (javascript)
如果一个单选按钮被选中,则它的checked
属性为true
。然后,我们将选中单选按钮的value
分配给selectedSize
变量。
由于单选组中一次只能选中一个单选按钮,因此循环通过break
语句立即终止。
最后,设置输出元素的消息
output.innerText = selectedSize ? `You selected ${selectedSize}` : `You haven't selected any size`;
Code language: JavaScript (javascript)
单选按钮的更改事件
当您选中或取消选中单选按钮时,它会触发更改事件。要监听更改事件,您可以使用addEventListener()
方法,如下所示
radioButton.addEventListener('change',function(e){
});
Code language: JavaScript (javascript)
在更改事件处理程序中,您可以访问this
关键字来访问单选按钮。要检查单选按钮是否被选中,您可以使用checked
属性
if(this.checked) {
//
}
Code language: JavaScript (javascript)
要获取选中按钮的值,您可以使用value
属性
if(this.checked) {
console.log(this.value);
}
Code language: JavaScript (javascript)
它将如下所示
radioButton.addEventListener('change', function (e) {
if (this.checked) {
console.log(this.value);
}
});
Code language: JavaScript (javascript)
以下示例动态生成一个单选组,并在选中单选按钮时显示选中值
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JavaScript Radio Button</title>
</head>
<body>
<p>Select your size:</p>
<div id="group">
</div>
<p id="output"></p>
<script>
const sizes = ['XS', 'S', 'M', 'L', 'XL', 'XXL'];
// generate the radio groups
const group = document.querySelector("#group");
group.innerHTML = sizes.map((size) => `<div>
<input type="radio" name="size" value="${size}" id="${size}">
<label for="${size}">${size}</label>
</div>`).join(' ');
// add an event listener for the change event
const radioButtons = document.querySelectorAll('input[name="size"]');
for(const radioButton of radioButtons){
radioButton.addEventListener('change', showSelected);
}
function showSelected(e) {
console.log(e);
if (this.checked) {
document.querySelector('#output').innerText = `You selected ${this.value}`;
}
}
</script>
</body>
</html>
Code language: HTML, XML (xml)
工作原理。
首先,定义一个字符串数组,用于保存尺寸。在实践中,您可能从后端数据库或 API 调用结果中获取这些值
const sizes = ['XS', 'S', 'M', 'L', 'XL', 'XXL'];
Code language: JavaScript (javascript)
其次,从尺寸数组的元素中生成单选组
const group = document.querySelector('#group');
group.innerHTML = sizes
.map(
(size) => `<div>
<input type="radio" name="size" value="${size}" id="${size}">
<label for="${size}">${size}</label>
</div>`
)
.join(' ');
Code language: JavaScript (javascript)
在此代码中
1) 选择具有 id #group
的元素。
2) 使用map()
方法和模板文字生成一个单选组;每个数组元素对应一个单选按钮 HTML。
3) 使用join()
方法将单选按钮 HTML 字符串连接成一个 HTML 字符串。
4) 将 HTML 分配给输出元素的innerHTML
。
第三,选择所有名称为size
的单选按钮并添加更改事件监听器
const radioButtons = document.querySelectorAll('input[name="size"]');
for (const radioButton of radioButtons) {
radioButton.addEventListener('change', showSelected);
}
Code language: JavaScript (javascript)
最后,定义更改事件处理程序
function showSelected(e) {
if (this.checked) {
document.querySelector('#output').innerText = `You selected ${this.value}`;
}
}
Code language: JavaScript (javascript)
总结
- 使用类型为
radio
的<input>
元素创建单选按钮。 - 为多个单选按钮分配一个名称以形成单选组。单选组中一次只能选择一个单选按钮。
- 如果单选按钮被选中,则它的
checked
属性为true
。