Javascript 类型错误 : document. getElementById(...) 为空

标签 javascript html forms typeerror getelementbyid

<分区>

这是我的 html 代码:

<form name="searchForm" action="javascript:;" method="post" />
  <p>
   <label for="search">Search the site:</label>
   <input type="text" id="search" name="search" value="xhr" />
   <input type="submit" value="Search" />
 </p>
</form>

在 header 中,我包含了我的 JavaScript 文件和以下特定代码:

window.onload = function () {
    getValues = function (id) {
    var i, values = [], form = document.getElementById(id);
    for (i = 0; i < form.length ;i++) {
        values.push( form.elements[i].value );
    }
    return values;
  }
}

我尝试使用 console.log(getValues("searchForm") ); 访问该函数,但在我的 Firefox 控制台中,我收到了以下错误: TypeError: form is null.

谁能告诉我为什么这不起作用?

最佳答案

您使用的是 name 属性的值,而不是 id。因此,您需要将 name 更改为 id 或使用

form = document.getElementsByName(id)[0];

另请注意,如果您使用上述代码,它将返回 NodeList,因此您需要使用索引来获取所需的元素。

关于Javascript 类型错误 : document. getElementById(...) 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27581667/

相关文章:

javascript - 优化结果页优先查询结果条数

html - Textarea 框在点击初始页面加载时移动

javascript - 创建旋转形状的背景

forms - zf2 表单绑定(bind)对象问题

jquery - 输入被禁用,直到先前的输入被填充

javascript - Heroku 返回 400 错误请求响应 (Socket.IO Node.js)

javascript - 在 jQuery 中更改背景颜色

javascript - Gulp 4 监视任务未检测到更改

javascript - jQuery 在 tr 中获取子文本

html 表单输入 - 每个输入字段的多个答案