【问题标题】:Autofill a radiobutton自动填充单选按钮
【发布时间】:2020-10-27 22:50:16
【问题描述】:

我正在尝试自动填充单选按钮类型,我正在这个网站上进行培训并使用它的代码在我的 google chrome 控制台上对其进行测试,但它返回未定义。

网站:https://benalexkeen.com/autofilling-forms-with-javascript/

html:view-source:https://benalexkeen.com/autofilling-forms-with-javascript/

我正在尝试使用此代码勾选第三个单选按钮:

var radioElements = document.getElementsByName("input3");

    for (var i=0; i<radioElements.length; i++) {
      if (radioElements[i].getAttribute('value') == 'Radio3') {
        radioElements[i].checked = true;
      }
    }

输出:

我试图调整这段代码以在另一个网站上打勾,但仍然有这个未定义的输出

【问题讨论】:

  • 你能发布 JS 应该处理的 HTML 吗? The code works,前提是正确创建了 HTML 并且在页面加载后运行了 JS
  • 请提供一个可重现的最小示例,以便我们为您提供帮助。
  • 我无法在我的 google chrome 控制台上运行它,为什么?
  • 这可能是document.getElementsByName 还是document.getElementsByTagName
  • 我做了 var x = 3;它返回:未定义

标签: javascript html css google-chrome console


【解决方案1】:

如果您想要更容易阅读 IMO,这是另一种方法。

// Instead of var I used let.
let radioElements = document.getElementsByName("input3");
radioElements.forEach((input) => {
    if(input.value === "Radio3") input.checked = true;
})
<input type="radio" id="Radio1" name="input3" value="Radio1">
<label for="radio1">Radio 1</label><br>
<input type="radio" id="Radio2" name="input3" value="Radio2">
<label for="radio2">Radio 2</label><br>
<input type="radio" id="radio3" name="input3" value="Radio3">
<label for="radio3">Radio 3</label>

关于undefined,如果您编写的代码没有返回任何内容,它会执行此操作。虽然,这并不意味着不工作。

【讨论】:

    【解决方案2】:

    我希望这会有所帮助。你可能误会了属性值

    var radioElements = document.getElementsByName("input3");
    
        for (var i=0; i<radioElements.length; i++) {
          if (radioElements[i].getAttribute('value') == 'radio3') {
            radioElements[i].checked = true;
          }
        }
    <input type="radio" id="radio1" name="input3" value="radio1">
    <label for="radio1">Redio 1</label><br>
    <input type="radio" id="radio2" name="input3" value="radio2">
    <label for="radio2">Redio 2</label><br>
    <input type="radio" id="radio3" name="input3" value="radio3">
    <label for="radio3">Radio 3</label>

    【讨论】:

    • 谢谢,但我认为问题不在于代码......谷歌浏览器只是把我扔了:未定义
    • 一般来说,在 chrome 控制台中,如果你只是声明一个它给出未定义的变量,那不是错误,但通常终端会在输入时给出一些输出,但由于你没有打印任何东西,它只是打印无缘无故未定义。不要忘记将此标记为正确答案:)
    • 好的,但是我运行了你的代码仍然没有定义,这可能是一个错误的设置,但我不知道是哪个
    • 不,这是 chrome 控制台的正常行为。转到 chrome 控制台并尝试运行 var a = 1 也在这里它会给你未定义的,对我来说也是如此。这并不重要或错误。如果您仍然想删除它,请按照这篇文章:stackoverflow.com/questions/14633968/….
    • @volvic2L 不打算返回某些东西的东西会这样做。类似于:1 + 1 将返回 2,因为这是一个返回结果的操作。像var test = 2 这样的东西会显示undefined,因为这只是一个分配,它没有计算任何东西,它实际上并没有为你返回任何东西。
    猜你喜欢
    • 1970-01-01
    • 2013-05-01
    • 1970-01-01
    • 2021-12-24
    • 2011-12-25
    • 1970-01-01
    • 2012-03-19
    • 2017-04-19
    相关资源
    最近更新 更多