Html 从网页中的输入标记提取元素信息
我使用Html 从网页中的输入标记提取元素信息,html,vba,input,Html,Vba,Input,我使用.getElementByID(“TBPRODDESC###############”)成功地将Excel宏写入网站。value其中####是输入框的唯一ID,但是当禁用/股票值为零或低于输入的数字时,会出现某些情况。当宏继续运行而没有错误时,识别何时发生这种情况将非常有用 在输入框中有标签“InStock”,但是由于在许多不同的输入ID中有多个此标签的实例,我不确定如何提取特定输入ID的此信息 下面是我正在使用的两个的示例 (一) “ 正在查找是否已禁用TBPRODDESC111111
.getElementByID(“TBPRODDESC###############”)成功地将Excel宏写入网站。value
其中####是输入框的唯一ID,但是当
禁用/股票值为零或低于输入的数字时,会出现某些情况。当宏继续运行而没有错误时,识别何时发生这种情况将非常有用
在输入框中有标签“InStock”,但是由于在许多不同的输入ID中有多个此标签的实例,我不确定如何提取特定输入ID的此信息
下面是我正在使用的两个
的示例
(一)
“
- 正在查找是否已禁用TBPRODDESC111111或TBPRODDESC111111/“InStock”=0
- 正在查找TBPRODDESC33333/“InStock”=5
如果您能帮助我了解如何完成此检查,我们将不胜感激。如果我理解正确,您可以使用querySelector
let elInputs = document.querySelector('[id^="TBPRODDESC"]');
然后,您可以在该元素数组上执行业务逻辑。
例如,您可以过滤所有禁用的元素,如下所示:
let elDisabled = [];
for(let i=0; i<elInputs.length; i++) {
if(elInputs[0].disabled == true)
elDisabled.push(elInputs[0]);
}
让elDisabled=[];
对于(设i=0;i如果我理解正确,您可以使用querySelector
let elInputs = document.querySelector('[id^="TBPRODDESC"]');
然后,您可以在该元素数组上执行业务逻辑。
例如,您可以过滤所有禁用的元素,如下所示:
let elDisabled = [];
for(let i=0; i<elInputs.length; i++) {
if(elInputs[0].disabled == true)
elDisabled.push(elInputs[0]);
}
让elDisabled=[];
for(设i=0;i
及
然而,我对JavaScript和Excel的混合感到有点困惑
及
然而,我对JavaScript和Excel的混合感到有些困惑。如果你不共享网页,我无法真正测试这一点,但我想你想:
- 获取页面的所有
元素
- 获取具有
InStock
>0的所有输入的id
值
- 用这个
id
(我想设置一个值?)
请尝试以下代码:
Set mInputs = IE.Document.getElementsByTagName("input") 'get all inputs
For Each mInput In mInputs 'loop through each of them
If mInput.hasAttribute("InStock") Then
If mInput.getAttribute("InStock") <> "0" Then
'this sets directly the value
mInput.Value = "something"
'you can get the id like this if you need it somewhere else:
mId = mInput.getAttribute("id")
End If
End If
Next mInput
Set minput=IE.Document.getElementsByTagName(“输入”)获取所有输入
对于每个mInput,在mInput'循环中通过每个mInput
如果mInput.hasAttribute(“InStock”),那么
如果mInput.getAttribute(“InStock”)“0”,则
'这将直接设置值
mInput.Value=“某物”
'如果您在其他地方需要它,您可以像这样获得id:
mId=mInput.getAttribute(“id”)
如果结束
如果结束
下一个明普特
如果您不共享此网页,我无法真正测试此功能,但我想您应该:
- 获取页面的所有
元素
- 获取具有
InStock
>0的所有输入的id
值
- 用这个
id
(我想设置一个值?)
请尝试以下代码:
Set mInputs = IE.Document.getElementsByTagName("input") 'get all inputs
For Each mInput In mInputs 'loop through each of them
If mInput.hasAttribute("InStock") Then
If mInput.getAttribute("InStock") <> "0" Then
'this sets directly the value
mInput.Value = "something"
'you can get the id like this if you need it somewhere else:
mId = mInput.getAttribute("id")
End If
End If
Next mInput
Set minput=IE.Document.getElementsByTagName(“输入”)获取所有输入
对于每个mInput,在mInput'循环中通过每个mInput
如果mInput.hasAttribute(“InStock”),那么
如果mInput.getAttribute(“InStock”)“0”,则
'这将直接设置值
mInput.Value=“某物”
'如果您在其他地方需要它,您可以像这样获得id:
mId=mInput.getAttribute(“id”)
如果结束
如果结束
下一个明普特
非常感谢您的快速回复,但我并不需要进行过滤,因为宏会遍历我们购买的供应商库存的所有物品,并在网站上填写要订购的物品。如果我能确定如何提取“InStock”“从输入中标记值,然后我可以使用该值来标记该项目将不会被订购,或者订购的库存将低于所需数量。也许您可以使用.getAttribute(“InStock”)输入元素上的方法非常感谢您的快速回复,但我并不需要进行过滤,因为宏会遍历我们购买的供应商库存的所有项目,并在网站上填写要订购的库存。如果我能确定如何提取“InStock”从输入中标记值,然后我可以使用该值来标记该项目将不会被订购,或者订购的库存将低于所需的库存。也许您可以使用.getAttribute(“InStock”)输入元素上的方法不是混合,VBA有一个与HTML DOM交互的库,该库提供适合JS的函数,因此具有相同的名称和类似的语法。但是用户使用VBA编码,而不是JavaScriptIt不是混合,VBA有一个与HTML DOM交互的库,该库提供适合JS的函数,因此具有相同的名称和相似的语法。但是用户使用的是VBA,而不是JavaScript