#html #vba #web-scraping #attributes
#HTML #vba #очистка веб-страниц #атрибуты
Вопрос:
<tr>
**<td>**JB - Al Qouz**</td>**
**<td>**
<strong>0</strong>
<input type="hidden" name="ingredient[inventories_attributes][][id]" id="ingredient_inventories_attributes__id" value="5564069">
<small><span class="buyUnitValueText ">pc</span></small>
<small><b><span id="totalStockValue_1" class="hide paddingLeft15 updateTotalStockValue"></span></b></small>
**</td>**
**<td>**
<div class="align-left">
<input type="text" name="ingredient[inventories_attributes][][reorder_level]" id="ingredient_inventories_attributes__reorder_level" value="0" class="span5 menuItemInventory reOrderValue">
<small><span class="buyUnitValueText span7 labelText pull-right align-left">pc</span>
</small>
</div>
**</td>**
<td class="align-left">
<input type="hidden" name="ingredient[inventories_attributes][][track_inventory]" id="track_inventory_9971" **value="true"**>
**<div class="vCheckBox trackInventoryCheckbox active" id="9971"></div>**
Мне нужно изменить 2 вещи (см. Жирный шрифт), если "id=9971"
через vba.
- Установите класс
vCheckBox trackInventoryCheckbox active
в классvCheckBox trackInventoryCheckbox
- Установите
value="true"
значениеvalue="false"
Причина в том, что я не могу нажать кнопку через VBA, и изменение кода в html, которое происходит при нажатии вручную, — это 1. amp; 2. упомянутые выше.
Пожалуйста, сообщите, ниже приведен мой код, в котором я пытался получить значение тега, tr
но не смог, вторая часть была там, где я мог изменить значения.
With ie
.Visible = True
.navigate (EditIngredientURL)
While .Busy Or .readyState <> 4: DoEvents: Wend
While .document.readyState <> "complete": DoEvents: Wend
End With
Set HTMLdoc = ie.document
Set tr = HTMLdoc.getElementsByTagName("tr")
For Each trObj In tr
Set td = trObj.getElementsByTagName("td")
For Each tdObj In td
If InStr(tdObj.innerText, "JB - Al Qouz") Then
Debug.Print tdObj.innerText
Set CheckBox = tdObj.getElementsByTagName("class")
For Each idnumber In CheckBox
Debug.Print idnumber.innerText
Exit For
Next
End If
Next
Next
End Sub
Комментарии:
1. Ответил кодом, который я пытался использовать, чтобы сначала получить значение класса в td, чтобы я мог его изменить, проблема в первую очередь: я не могу получить значение атрибута «value» в <input . Во-вторых, я не уверен, как я проанализировал <div, чтобы прочитать идентификатор, а затем изменить прикрепленный к нему класс.
2. Мне неясно, знаете ли вы этот идентификационный номер
id=9971
или он неизвестен?3. «Id = 9971» связан с «JB — Al Qouz» и известен мне с самого начала кода, я могу использовать его в качестве справочной базы для изменения 1. amp; 2. там.
4. Попробуйте
HTMLdoc.getElementById("track_inventory_9971").value = "false"
иHTMLdoc.getElementById("9971").className = "vCheckBox trackInventoryCheckbox"
5. Это сработало идеально! Большое спасибо, чувак.
Ответ №1:
Если идентификатор известен и у вас есть его в переменной idNo
, вы можете использовать его для поиска элементов:
idNo = "9971"
HTMLdoc.getElementById("track_inventory_" amp; idNo).value = "false"
HTMLdoc.getElementById(idNo).className = "vCheckBox trackInventoryCheckbox"