Javascript 多次传递单选按钮的值

Javascript 多次传递单选按钮的值,javascript,Javascript,我正在编写一些代码,它获取单选按钮的选定值,并将其传递给下一组单选按钮作为输入。代码在第一次传递时运行良好,但是在以后的任何时候,它都会传递“继续”,而不是传递值。我认为这只是一些愚蠢的事情,但我一直无法理解 链接到JS Fiddle: 以下是HTML和JS: <div class="container"> <ul class="aaa"> <li> <input type="radio" name="g1" id="i1" va

我正在编写一些代码,它获取单选按钮的选定值,并将其传递给下一组单选按钮作为输入。代码在第一次传递时运行良好,但是在以后的任何时候,它都会传递“继续”,而不是传递值。我认为这只是一些愚蠢的事情,但我一直无法理解

链接到JS Fiddle:

以下是HTML和JS:

<div class="container">
  <ul class="aaa">
    <li>
      <input type="radio" name="g1" id="i1" value="s#1" data-target="r65">
      <label id="r1" for="i1">s#1</label>
      <div class="check">
        <div class="inside"></div>
      </div>
    </li>
    <li>
      <input type="radio" name="g1" id="i2" value="s#16" data-target="r65">
      <label id="r2" for="i2">s#16</label>
      <div class="check">
        <div class="inside"></div>
      </div>
    </li>
  </ul>
</div>
<div class="container">
  <ul class="aaa">
    <li>
      <input type="radio" name="g2" id="i3" value="s#8" data-target="r66">
      <label id="r3" for="i3">s#8</label>
      <div class="check">
        <div class="inside"></div>
      </div>
    </li>
    <li>
      <input type="radio" name="g2" id="i4" value="s#9" data-target="r66">
      <label id="r4" for="i4">s#9</label>
      <div class="check">
        <div class="inside"></div>
      </div>
    </li>
  </ul>
</div>
<div class="container">
  <ul class="aaa">
    <li>
      <input type="radio" name="g33" id="i65" data-target="r97">
      <label id="r65" for="i65"></label>
      <div class="check">
        <div class="inside"></div>
      </div>
    </li>
    <li>
      <input type="radio" name="g33" id="i66" data-target="r97">
      <label id="r66" for="i66"></label>
      <div class="check">
        <div class="inside"></div>
      </div>
    </li>
  </ul>
</div>

<div class="container">
  <ul class="aaa">
    <li>
      <input type="radio" name="g49" id="i97" data-target="r113">
      <label id="r97"></label>
      <div class="check">
        <div class="inside"></div>
      </div>
    </li>
    <li>
      <input type="radio" name="g49" id="i98" data-target="r113">
      <label id="r98"></label>
      <div class="check">
        <div class="inside"></div>
      </div>
    </li>
  </ul>
</div>

previousSibling属性返回同一树级别中指定节点的上一个节点

返回的节点作为节点对象返回

此属性与previousElementSibling的区别在于,previousSibling将上一个同级节点作为元素节点、文本节点或注释节点返回,而previousElementSibling将上一个同级节点作为元素节点返回(忽略文本和注释节点)

const inputs=document.queryselectoral(“input[type=radio]”);
用于(输入端的输入端){
inp.addEventListener(“更改”,函数(){
让targetLabel=document.getElementById(inp.dataset.target);
console.log(targetLabel);
设targetRadio=targetLabel.previousElementSibling;
targetRadio.value=inp.value;
targetLabel.innerHTML=inp.value;
targetRadio.checked=假;
//当有下一个目标时,清除它
while(targetLabel.previousElementSibling.hasAttribute){
targetLabel=document.getElementById(targetRadio.dataset.target);
targetRadio=targetLabel.previousSibling;
targetRadio.checked=假;
targetLabel.innerHTML='';
}
});

}
感谢您的解释和修复!工作起来很有魅力!
const inputs = document.querySelectorAll("input[type=radio]");
for (let inp of inputs) {
  inp.addEventListener("change", function() {
    let targetLabel = document.getElementById(inp.dataset.target);
    let targetRadio = targetLabel.previousSibling;
    targetLabel.innerHTML = inp.value;
    targetRadio.value = inp.value;
    targetRadio.checked = false;
    //while there is a next target clear it
    while (targetLabel.previousSibling.hasAttribute) {
      targetLabel = document.getElementById(targetRadio.dataset.target);
      targetRadio = targetLabel.previousSibling;
      targetRadio.checked = false;
      targetLabel.innerHTML = '';
    }
  });
}