代码之家  ›  专栏  ›  技术社区  ›  HashSu

单选按钮值正在打印“on”,而不是它所保存的值

  •  1
  • HashSu  · 技术社区  · 7 年前

    function perform_global(tablecounter) 
    {
      for (index = 1; index <= 2; ++index) {
          var dnsname = "dns_name"+index;
          oRadio = document.getElementsByName(dnsname);
    
          alert (" radio ID " + dnsname + "  " + index + "length " + oRadio.length);
          for(var i = 0; i < oRadio.length; i++)
          {
            if(oRadio[i].checked)
            {
              alert( "Checked Value is " + oRadio[i].value );
            }
          }
        }
    }
    <form id=globe>
       <table id=x >
          <THEAD><TR>
          <TH> DNSNAME </TH>
          </TR> </THEAD>
          <TBODY id="tbody_1_1"> <TR>
          <TD>
            <input type='radio' name='dns_name1' value='service_name_xx' checked>  service_names_xx 
          </TD>
    
          <TD>
            <input type='radio' name='dns_name1' value='service_name_yy' >  service_name_yy  
          </TD>
         </TR></TBODY>
       </table>
       <table id=y>
         <THEAD><TR>
         <TH> DNSNAME </TH>
         </TR> </THEAD>
         <TBODY id="tbody_1_2"> <TR>
         <TD>
          <input type='radio' name='dns_name2' value='service_name_xxx' checked>  service_names_xxx 
         </TD>
          <TD>
            <input type='radio' name='dns_name2' value='service_name_yyy'>  service_name_yyy 
    
          </TD>
         </TR></TBODY>
        </table>
    <button onclick="perform_global()">
    </form>
    1 回复  |  直到 7 年前
        1
  •  1
  •   Dacre Denny    7 年前

    如果我正确地理解了你的问题,那么实现你的要求的一个选择就是通过 querySelectorAll() getAttribute() 方法。

    首先,将以下选择器传递给 要获取选中的所有无线电输入元素:

    querySelectorAll('input[type="radio"]:checked')
    

    接下来,迭代此查询返回的匹配元素列表,并获取相应的 value 属性(和 name 属性(如果需要) 获取属性() 方法:

    radio.getAttribute("value")
    

    function perform_global(event) {
    
      // Prevent button from submitting
      event.preventDefault();
    
      // Use querySelectorAll to select radio elements that are checked
      for (let radio of document.querySelectorAll(`input[type="radio"]:checked`)) {
    
        // Use getAttribute to aquire value attribute for checked radio
        console.log("Checked group:" + radio.getAttribute("name") + ", value:" + radio.getAttribute("value"));
      }
    }
    <form id=globe>
      <table id=x>
        <TH> DNSNAME </TH>
        <TD>
          <input type='radio' name='dns_name1' value='service_name_xx' checked> service_names_xx
        </TD>
        <TD>
          <input type='radio' name='dns_name1' value='service_name_yy'> service_name_yy
        </TD>
      </table>
      <table id=y>
        <TH> DNSNAME </TH>
        <TD>
          <input type='radio' name='dns_name2' value='service_name_xx' checked> service_names_xx
        </TD>
        <TD>
          <input type='radio' name='dns_name2' value='service_name_yy'> service_name_yy
        </TD>
      </table>
      <!-- Pass event to onclick handler -->
      <button onclick="perform_global(event)">Button</button>
    </form>