首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >指定单选按钮的标签而不是值

指定单选按钮的标签而不是值
EN

Stack Overflow用户
提问于 2017-02-25 14:07:18
回答 2查看 572关注 0票数 0

考虑一下html中的以下单选按钮:

代码语言:javascript
复制
<tr>  
    <td> Lighting </td>
    <td> <label for="lighting1"> Off </label> 
        <input id = "lighting1" name="lighting" type="radio" value="0"> </td>
    <td> <label for="lighting2"> Low </label> 
        <input id = "lighting2" name="lighting" type="radio" value="1"> </td>
    <td> <label for="lighting3"> High </label> 
        <input id = "lighting3" name="lighting" type="radio" value="2"> </td>
</tr>  

我需要一个javascript语句,它将在变量上分配单选按钮的标签,而不是它的值,即'Off','Low‘或'High’,而不是'0','1‘或'2’。选中该单选按钮时。

这看起来很简单明了,但我无论如何都做不到。我在论坛上也没有找到任何有效的答案。请不要在此说明所有不可行的试验,并仅用一行有效的代码来启发我。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-25 14:17:19

您可以使用通用名称获取无线电,并使用input.value = newValue更新值

代码语言:javascript
复制
function updateValues(){
  var radios = document.querySelectorAll('[name="lighting"]');
  for(var i = 0; i< radios.length; i++){
    var id = radios[i].getAttribute('id');
    radios[i].value = document.querySelector('label[for="'+id+'"]').textContent.trim()
  }
}

function registerEvents(){
  var radios = document.querySelectorAll('[name="lighting"]');
  for(var i = 0; i< radios.length; i++)
    radios[i].addEventListener("change", handleChange)
}

function handleChange(){
  console.log(this.value)
}

registerEvents();
代码语言:javascript
复制
<tr>
  <td> Lighting </td>
  <td> <label for="lighting1"> Off </label>
    <input id="lighting1" name="lighting" type="radio" value="0"> </td>
  <td> <label for="lighting2"> Low </label>
    <input id="lighting2" name="lighting" type="radio" value="1"> </td>
  <td> <label for="lighting3"> High </label>
    <input id="lighting3" name="lighting" type="radio" value="2"> </td>
</tr>

<p id="selectedValues"></p>

<button onclick="updateValues()" >Update Values</button>

票数 0
EN

Stack Overflow用户

发布于 2017-02-25 15:07:16

代码语言:javascript
复制
var radioButtons = document.querySelectorAll("input[type='radio']");
for(var i = 0; i< radioButtons.length; i++)
{
    radioButtons[i].addEventListener("click", (e)=>{
        var radioButton = e.target || e.srcElement;
        var label = document.querySelector("label[for='" + radioButton.id + "'");
        alert(label.innerText.trim());
    });
}

编辑:删除了我最初添加的jquery代码片段。因为用户只寻找javascript解决方案,而只保留该解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42452596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档