Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在具有相同id但不同onclick元素的VBA的IE上单击第二个按钮_Javascript_Html_Excel_Vba_Web Scraping - Fatal编程技术网

Javascript 如何在具有相同id但不同onclick元素的VBA的IE上单击第二个按钮

Javascript 如何在具有相同id但不同onclick元素的VBA的IE上单击第二个按钮,javascript,html,excel,vba,web-scraping,Javascript,Html,Excel,Vba,Web Scraping,我试着点击IE中的一个按钮,它有相同的ID,相同的类,但不同的onclick。我的代码使用第一个按钮,但无法单击第二个按钮。 Onclick元素将调用函数RaiseGdcP1(ItemLineNo) 我已经尝试使用ihtmlement循环我的代码以搜索IdbtnGdcP1,并单击所有Id,但失败 这里是我用来点击第一个按钮的代码 Set HTMLDoc = IE.document HTMLDoc.parentWindow.execScript "window.confirm = function

我试着点击IE中的一个按钮,它有相同的ID,相同的类,但不同的onclick。我的代码使用第一个按钮,但无法单击第二个按钮。
Onclick元素将调用函数
RaiseGdcP1(ItemLineNo)

我已经尝试使用
ihtmlement
循环我的代码以搜索Id
btnGdcP1
,并单击所有Id,但失败

这里是我用来点击第一个按钮的代码

Set HTMLDoc = IE.document
HTMLDoc.parentWindow.execScript "window.confirm = function(){return true;};"
HTMLDoc.getElementById("btnGdcP1").Click
Application.Wait Now + TimeValue("00:00:10")
Html如下所示

<INPUT onclick=RaiseGdcP1(2) id=btnGdcP1 type=button value="GDC P1" name=btnGdcP1> "1st button
<INPUT onclick=RaiseGdcP1(3) id=btnGdcP1 type=button value="GDC P1" name=btnGdcP1> "2nd button
“第一个按钮
“第二个按钮
即使在我的excel中,每个按钮也有两行。 上面的我的代码只能单击第一个按钮。
我想点击这两个按钮。 你能帮我一下吗


谢谢。

两个id值相同是错误的。它必须是唯一的,才能按预期工作:

将第二个id更改为唯一值(btnGdcP2),并在代码中使用该值:

HTMLDoc.getElementById("btnGdcP1").Click
HTMLDoc.getElementById("btnGdcP2").Click

两个id的值相同是错误的。它必须是唯一的,才能按预期工作:

将第二个id更改为唯一值(btnGdcP2),并在代码中使用该值:

HTMLDoc.getElementById("btnGdcP1").Click
HTMLDoc.getElementById("btnGdcP2").Click

您可以使用属性=值选择器来区分

ie.document.querySelector("[onclick='RaiseGdcP1(2)']").click
你可能需要避开()的限制

但我不这么认为。我认为逃跑是为了不被引用的时候

ie.document.querySelector("[onclick=RaiseGdcP1\(2\)]").click
另一方面

ie.document.querySelector("[onclick='RaiseGdcP1(3)']").click

您还可以将querySelectorAll()与#id选择器一起使用

Dim buttons As Object
Set buttons = ie.document.querySelectorAll("#btnGdcP1")
buttons.item(0).click '< first
buttons.item(1).click '< second

您可以使用属性=值选择器来区分

ie.document.querySelector("[onclick='RaiseGdcP1(2)']").click
你可能需要避开()的限制

但我不这么认为。我认为逃跑是为了不被引用的时候

ie.document.querySelector("[onclick=RaiseGdcP1\(2\)]").click
另一方面

ie.document.querySelector("[onclick='RaiseGdcP1(3)']").click

您还可以将querySelectorAll()与#id选择器一起使用

Dim buttons As Object
Set buttons = ie.document.querySelectorAll("#btnGdcP1")
buttons.item(0).click '< first
buttons.item(1).click '< second


你的意思是在网络上改变它?严格来说这不是真的。您可以重复相同的id。@Ruzaini:更改HTML代码和javascript。@QHarr:可以,它不会产生错误,但它违背了id唯一性的目的。您希望从getElementById(multipleSameIDs)得到什么样的返回值?我会使用我在回答中使用的任何方法。如果我能控制html本身(拥有该网站),那将是另一回事。你的意思是在web中更改它吗?严格来说,这不是真的。您可以重复相同的id。@Ruzaini:更改HTML代码和javascript。@QHarr:可以,它不会产生错误,但它违背了id唯一性的目的。您希望从getElementById(multipleSameIDs)得到什么样的返回值?我会使用我在回答中使用的任何方法。如果我能控制html本身(拥有该网站),那将是另一回事。我将尝试最后一个选项。如果能够使用变量,我还想试试
ie.document.parentWindow.execScript“RaiseGdcP1(i)”
如果使用i变量作为索引,则可以将i合并到上述所有内容中。您也可以传递到querySelectorAll(#btnGdcP1”)。项(i)。单击“谢谢”。我认为它适用于querySelectorAll()。尝试调用函数,失败。我尝试了调用函数,但在第
行按钮上出现错误。项(j)。单击“
运行时错误424 object required”,我将尝试最后一个选项。如果能够使用变量,我还想试试
ie.document.parentWindow.execScript“RaiseGdcP1(i)”
如果使用i变量作为索引,则可以将i合并到上述所有内容中。您也可以传递到querySelectorAll(#btnGdcP1”)。项(i)。单击“谢谢”。我认为它适用于querySelectorAll()。尝试调用函数,失败。我尝试了,但在第
行按钮上出现错误。项(j)。单击“
运行时错误424所需对象”