当前位置: 首页 > 知识库问答 >
问题:

是否使用getElementsByName获取选中的单选按钮值?[副本]

彭建业
2023-03-14

我的房地产网站(例如1房间2房间3房间)有多个具有相同名称属性的单选按钮用于过滤。

我意识到我的代码非常反DRY,而且看起来非常重复。

我试过:

if (document.getElementById('rooms-all').checked) {
    filters.rooms = 999999999;
} else if (document.getElementById('room-1').checked) {
    filters.rooms = 1;
} else if (document.getElementById('room-2').checked) {
    filters.rooms = 2;
} else if (document.getElementById('room-3').checked) {
    filters.rooms = 3;
} else if (document.getElementById('room-4').checked) {
    filters.rooms = 4;
} else if (document.getElementById('room-5').checked) {
    filters.rooms = 5;
}

这非常有效,但我想做一些类似的事情:

let x = document.getElementsByName('rooms').checked; // also tried .value
console.log(x)

但由于某些原因,它返回未定义的值

我的HTML看起来像

<input type="radio" id="rooms-all" class='radio' name="rooms" value="999999999" checked>
<label for="rooms-all">All</label>
<input type="radio" id="room-1" class='radio' name="rooms" value="1">
<label for="room-1">1 Room</label>
<input type="radio" id="room-2" class='radio' name="rooms" value="2">
<label for="room-2">2 Rooms</label>
<input type="radio" id="room-3" class='radio' name="rooms" value="3">
<label for="room-3">3 Rooms</label>
<input type="radio" id="room-4" class='radio' name="rooms" value="4">
<label for="room-4">4 Rooms</label>
<input type="radio" id="room-5" class='radio' name="rooms" value="5">
<label for="room-5">5 Rooms</label>

我现在看到的是,我根本没有使用我给他们的值。

更好的方法是什么?

共有3个答案

堵琨
2023-03-14

使用时,文档。getElementsByName('rooms')您将得到一个节点列表,它是所有单选按钮的数组。所以使用。选中此数组上的,则不会返回任何内容。

因此,您可以这样使用它:

let x = document.getElementsByName('rooms')
 x.forEach((item, index) => {
    if (item.checked){
        filters.rooms = item.value
    }
 })

或者,您可以将其包装在一个函数中,并在所有单选按钮上添加一个事件监听器,如下所示:

var x = document.getElementsByName('rooms')
var handler = function() {

     x.forEach((item, index) => {
        if (item.checked){
            filters.rooms = item.value
        }
     })
}

x.forEach((item) => { item.onclick = handler})
仲高超
2023-03-14

getElementsByName返回一个节点列表对象,因此,您可以像执行数组检查一样对其进行迭代,如下所示:

   let x = document.getElementsByName('rooms'); 
    for (var i = 0; i < x.length; i++) {
        var checked = x[i].checked;
        console.log(checked)
    }
翟学文
2023-03-14

一种可能的解决办法:

[...document.querySelectorAll('[id^="room"]')]
    .filter(input => input.checked).map(input => Number(input.value))[0];
 类似资料:
  • 本文向大家介绍jQuery获取选中单选按钮radio的值,包括了jQuery获取选中单选按钮radio的值的使用技巧和注意事项,需要的朋友参考一下   实例1:   获取一组单选按钮对象:var obj_payPlatform = $('#wrap input[name="payMethod"]');   获取被选中按钮的值 :var val_payPlatform = $('#wrap inpu

  • 我的网页上有一个表单,如下所示: 如何在Javascript中提取当前选定单选按钮(没有提交操作)的值?我想要的是以下几点:

  • 如何获得文本而不是值,当我点击单选按钮? 下面的代码获取单选按钮的值。我想接短信(节目或电影)。提前道谢。 null null

  • 我有两类单选按钮,比如 蛋糕名称 -接下来是花 现在问题是我的底价是200。只要我选择第一个单选按钮价格就会增加到 接下来,如果我选择值为100的花列,价格应该增加到。这应该是动态发生的。有人能帮我吗?

  • 问题内容: 我有一段代码,其中一个包含三个s 。我想设置的,将显示的值的。但是,到目前为止我没有得到任何结果。如何获得的值并在中显示Toast?预先谢谢你,这是我的代码: XML档案: 问题答案: 经过测试和工作。检查一下 XML文件

  • 问题内容: 我已经在单选组中动态创建了两个单选按钮,并选中其中一个。我需要在我按下另一个按钮时将其值保存在字符串中。但是我已经为此实现了,但是第一次没有用。这是我的代码。 问题答案: xml文件 Java代码