【问题标题】:getElementByName returns Type Error?getElementsByName 返回类型错误?
【发布时间】:2013-04-14 02:32:01
【问题描述】:

我的代码:

var isSomethingChecked = (document.getElementByName("koalaCheck").checked ||
                          document.getElementByName("kangarooCheck").checked);

为什么这段代码会抛出一个叫做“类型错误”的异常?

【问题讨论】:

  • 因为 getElementByName 可能返回 null。
  • 当您尝试访问意外为 null 或未定义的值时,最常引发 TypeError。如果您在不是构造函数的值上使用运算符,或者将太多参数传递给内置函数,也可能引发 TypeError。
  • @zzzzBov 还是因为方法不存在...
  • 模糊的标题不太可能对网站的未来访问者有用。
  • @RaymondChen 好点,改了,希望对你有帮助

标签: javascript checked unchecked


【解决方案1】:

没有名为getElementByName 的函数。您需要的是getElementsByName,它返回一个包含所有具有该名称的元素的数组。所以你可以使用:

var isSomethingChecked = (document.getElementsByName("koalaCheck")[0].checked ||    
                         document.getElementsByName("kangarooCheck")[0].checked);

【讨论】:

  • 稍微解释一下您所做的更改会很有用。
  • 那么你能做这样的事情吗? var isSomethingChecked = (document.getElementsByName("koalaCheck", "kangarooCheck").checked)
  • @jfriend00 - 更改的是函数名称在元素末尾添加了一个“S”,因为 getElementsByName 可能返回超过 1 并且 getElementById 将只返回一个,因此元素名称为复数。很好的答案奥马尔杰克曼感谢您的帮助!
【解决方案2】:

那是因为正确的方法是document.getElementsByName()。你错过了一个s。

查看documentation。

假设您不希望检查每个元素的每个检查状态(因为此方法返回一个数组).. 我会使用 document.getElementById().. 但那是看不到您的 html。

【讨论】:

  • 而getElementsByName() 返回一个数组而不是单个元素。我没有投反对票,但你只答对了一部分。
  • @jfriend00 谢谢你的留言。我已经编辑了这方面的留言,尽管没有看到 html 或预期的操作,我相信任何进一步的事情都会在黑暗中拍摄。跨度>
【解决方案3】:

getElementsByName 返回具有给定名称的所有元素的数组。您要么需要使用 getElementById 函数,要么在返回的数组中指定特定元素,如下所示:

var isSomethingChecked = (document.getElementsByName("koalaCheck")[0].checked || document.getElementsByName("kangarooCheck")[0].checked);

您会收到“类型错误”,因为您正在检查是否检查了数组而不是特定元素。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-15
    • 1970-01-01
    • 1970-01-01
    • 2022-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-04
    相关资源
    最近更新 更多