1

我有这个 HTML:

<input type="submit" name="submit" value="Invoeren" accesskey="s" class="buttons"/>

我想点击()它。我无法在 HTML 端更改任何内容。当我这样做时getElementById("submit").click(),我得到了这个:

>>> document.getElementById("submit").click();
Cannot convert 'document.getElementById("submit")' to object

有什么提示吗?

4

7 回答 7

4

注意:切勿以“提交”形式调用任何内容!它将从脚本中隐藏表单的提交事件。

您有多种访问按钮的方式

document.querySelector("[name=submit]").click(); // first named button

document.querySelector("#form [name=submit]").click(); // in form with id="form"

旧 IE 会隐藏名称,因此您可以在名称上使用 getElementById,但不建议这样做。

旧方法:

document.getElementsByName("submit")[0].click();

其中 0 是页面上名为 submit 的第一个元素。

document.forms[0].elements[0].click(); 

哪里forms[0]是第一个形式并且elements[0]是第一个元素

或者

document.getElementsByTagName("form")[0].elements[0].click(); 

("form")[0]页面上的第一个表单在哪里,并且是elements[0]第一个元素

于 2015-04-24T11:23:18.500 回答
1

您正在使用getElementById,但您的输入没有id属性。仅仅因为 IE 完全对命名空间进行了 fubars 处理并将属性视为name属性id,并不意味着您应该这样做。

<input id="submit" ... />
...
document.getElementById('submit').click();
于 2010-12-31T17:48:44.287 回答
1

我可以看到的直接问题是您没有submit为您的输入分配 id ,所以这不起作用:

document.getElementById("submit").........

除非您也指定 id:

<input id="submit" type="submit" name="submit" value="Invoeren" accesskey="s" class="buttons"/>
于 2010-12-31T17:49:13.433 回答
1

由于您无法编辑实际的 HTML(添加 id 属性),并且您希望它是跨浏览器的,因此您可以遍历所有输入元素并检查 type 和 value 属性,直到它与您的提交按钮匹配:

function get_submit_button() {
    var inputs = document.getElementsByTagName('INPUT');
    for(var i=0; i < inputs.length; i++) {
        var inp = inputs[i];
        if(inp.type != 'submit') continue;
        if(inp.value == 'Invoeren' && inp.name == 'submit') {
            return inp;
            break; // exits the loop
        }
    }
    return false;
}

function click_submit() {
    var inp = get_submit_button();
    if(inp) inp.click();
}
于 2010-12-31T17:54:14.433 回答
0

您的输入没有 id 属性,因此无法通过 id 检索。改用这个。

<input id="submit" type="submit" name="submit" value="Invoeren" accesskey="s" class="buttons"/>
于 2010-12-31T17:49:17.013 回答
0

没有 ID 为“submit”的元素——您有一个名为“submit”的元素。正如 Dylan 所指出的,jQuery 会让一切变得更容易,但您可以自己修复它。如果您无法更改 HTML,请执行以下操作:

var buttons = document.getElementsByTagName("submit");
for (var i=0; i < buttons.length; i++) {
  var button = buttons[i];
  if (button.getAttribute("name") === "submit") {
     button.onclick = whatever ...
于 2010-12-31T17:52:47.160 回答
-1

您可能想研究 jQuery。它使一切变得如此简单。

于 2010-12-31T17:47:21.633 回答