首页 > 解决方案 > 从网页中的输入标签中提取元素信息

问题描述

我有一个 Excel 宏成功写入网站,.getElementByID("TBPRODDESC#####").value其中 ##### 是输入框的唯一 ID,但是在某些情况下<input>禁用/库存值为零或低于输入的数字。虽然宏继续没有错误,但确定何时发生这种情况将很有用。

<input>输入框中有标签“InStock”但是由于在许多不同的输入 ID 中有这个标签的多个实例,我不确定如何为特定的输入 ID 提取这些信息

<input>下面是我正在使用的两个示例

(1) <INPUT disabled id=TBPRODDESC11111 value=0 name=TBPRODDESC11111 InStock="0">"

(2) <INPUT id=TBPRODDESC33333 value=0 name=TBPRODDESC33333 InStock="5">

页面上大约有 100 个 Input 元素,每个元素都有一个唯一的 Input ID。

我可以使用 IE.Document.getElementById("TBPRODDESC11111").Value = Cells(3, "C").Value 写入输入

但使用 Stkflag = IE.Document.getElementByTagID("InStock").Value 总是给 0 因为我不确定如何指定我需要的 ID InStock 标签

任何帮助了解如何实现此检查将不胜感激。

标签: htmlvbainput

解决方案


如果我理解正确,您可以使用 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]);
}

对于 InStock 属性:

let elValidInStock= [];
for(let i=0; i<elInputs.length; i++) { 
  if(elInputs[0].hasAttribute("InStock") && elInputs[0].getAttribute("InStock") > 0 )
    elValidInStock.push(elInputs[0]);
}

推荐阅读