html - 单击单选按钮时,是否会自动添加选中的属性?
问题描述
检查输入单选时,我需要将 div 的背景更改为不同的颜色。我在我的开发工具中注意到,当我单击单选按钮时,html 不会将选中的标签添加到输入中。我打算做类似 input[type=radio]:checked + label 来应用这种方法。如果 html 没有应用选中的方法,我确定这不起作用吗?一旦用户点击它,我将如何让输入单选应用选中的属性?
<main class="subscription__container">
<section
id="preferences"
class="subscription__container--preferences box"
>
<div class="question__container">
<h3 class="question__container--title">
How do you drink your coffee?
</h3>
<img
class="question__container--img"
src="../assets/plan/desktop/icon-arrow.svg"
alt="arrow"
/>
</div>
<div class="options__container">
<div class="options__container--option">
<input
id="capsule"
type="radio"
data-preference="Capsule"
value="Capsule"
name="preferences"
/>
<label class="test__trail" for="capsule">
<h4 class="options__container--title">Capsule</h4>
<p class="options__container--description">
Compatible with Nespresso systems and similar brewers.
</p>
</label>
</div>
<div class="options__container--option">
<input
id="filter"
type="radio"
data-preference="Filter"
value="Filter"
name="preferences"
/>
<label class="test__trail" for="filter">
<h4 class="options__container--title">Filter</h4>
<p class="options__container--description">
For pour over or drip methods like Aeropress, Chemex, and V60.
</p>
</label>
</div>
<div class="options__container--option">
<input
id="espresso"
type="radio"
data-preference="Espresso"
value="Espresso"
name="preferences"
/>
<label class="test__trail" for="espresso">
<h4 class="options__container--title">Espresso</h4>
<p class="options__container--description">
Dense and finely ground beans for an intense, flavorful
experience.
</p>
</label>
</div>
</div>
</section>
解决方案
使用 javascript
这是一个函数,每次检查无线电输入时都会添加选中的属性
在 CSS 中,每个选中的单选都会有一个边距(只是为了可视化更改)
document.querySelectorAll('input[type=radio]').forEach(elem => {
elem.addEventListener('click', addChecked);
});
function addChecked(){
document.querySelectorAll('input[type=radio]').forEach(elem => {
elem.removeAttribute('checked');
});
document.querySelectorAll('input[type=radio]:checked')[0].setAttribute('checked', 'true');
}
input[type=radio]:checked {
margin: 50px;
}
<main class="subscription__container">
<section
id="preferences"
class="subscription__container--preferences box"
>
<div class="question__container">
<h3 class="question__container--title">
How do you drink your coffee?
</h3>
<img
class="question__container--img"
src="../assets/plan/desktop/icon-arrow.svg"
alt="arrow"
/>
</div>
<div class="options__container">
<div class="options__container--option">
<input
id="capsule"
type="radio"
data-preference="Capsule"
value="Capsule"
name="preferences"
/>
<label class="test__trail" for="capsule">
<h4 class="options__container--title">Capsule</h4>
<p class="options__container--description">
Compatible with Nespresso systems and similar brewers.
</p>
</label>
</div>
<div class="options__container--option">
<input
id="filter"
type="radio"
data-preference="Filter"
value="Filter"
name="preferences"
/>
<label class="test__trail" for="filter">
<h4 class="options__container--title">Filter</h4>
<p class="options__container--description">
For pour over or drip methods like Aeropress, Chemex, and V60.
</p>
</label>
</div>
<div class="options__container--option">
<input
id="espresso"
type="radio"
data-preference="Espresso"
value="Espresso"
name="preferences"
/>
<label class="test__trail" for="espresso">
<h4 class="options__container--title">Espresso</h4>
<p class="options__container--description">
Dense and finely ground beans for an intense, flavorful
experience.
</p>
</label>
</div>
</div>
</section>
推荐阅读
- sql - SQL:你如何只选择任何给定组具有所有给定值的组?
- azure - 从 Linux 终端删除 Azure 应用注册
- css - 在 Ionic 4 中自定义组件样式的最佳实践
- sql-server - 转换过程在 AWS Schema Conversion Tool 下挂起
- r - 如何使用 mutate 在 R 中正确格式化日期时间列?
- c# - Xamarin.Forms ViewModel 在页面加载时访问了两次
- php - 在php中按下按钮后运行python程序
- sql - 如何根据更新的记录更改创建列?
- azure - Azure Functions 运行速度不够快
- python - 向数据库插入数据时如何避免重复