如何通过浏览器控制台以编程方式单击按钮[代码内部]

Jer*_*era 3 html javascript

出于某种原因,我可以单击某些链接/按钮,但不能用于具有onclick属性的按钮/任何内容.例如:我输入浏览器控制台的JavaScript代码:

var o = document.getElementsByName("takepic"); 
for (var i = 0; i < 1000; i++){
    o.click();
    console.log(i);
}
Run Code Online (Sandbox Code Playgroud)

我把console.log放进去,所以我知道浏览器正在做什么,以及它目前在哪里.

页面上的html代码:

<form>
    <input type="button" value="Configure..." onclick="webcam.configure()">
    &nbsp;&nbsp;
    <input type="button" value="Take Snapshot" onclick="take_snapshot()" name="takepic">
</form>
Run Code Online (Sandbox Code Playgroud)

基本上,我想使用浏览器控制台拍摄快速快照,但是当我输入我的代码时,我收到此错误:

TypeError:Object#没有方法'click'

当我使用相同的代码时,比如在Facebook上重新添加朋友,我使用这个:

var o = document.getElementsByName("fbaddfriend_example"); 
for (var i = 0; i < o.length; i++){
    o[i].click(); 
    console.log(i);
}
Run Code Online (Sandbox Code Playgroud)

绝对有效.我只是试图用页面上的按钮做同样的事,但没有用.

Com*_*eek 5

将代码更改为:

var o = document.getElementsByName("takepic"); 
for (var i = 0; i < 1000; i++){
// ---v
    o[i].click();
    console.log(i);
}
Run Code Online (Sandbox Code Playgroud)

该变量o保存所有检索到的元素的集合。o[i]返回位置 处的元素i


Bic*_*Bic 5

您的问题出在您在控制台中输入的代码中.您正在使用document.getElementsByName(),它将返回一个元素数组.你需要遍历这些元素.您是在第二个代码段中执行此操作,但不是第一个.

var o = document.getElementsByName("takepic"); 
for (var j = 0; j < o.length; j++) {
    for (var i = 0; i < 1000; i++){
        o[j].click();
        console.log(i);
    }
}
Run Code Online (Sandbox Code Playgroud)