Что нового

Как получить значение между тегов span но с дополнительным условием

uritalex

Новичок
Сообщения
197
Репутация
3
И снова я к Вам :smile: сказали сделать новую тему и вот вопрос: Как отследить значение между тегов span при условии нахождения его в месте с текстом то есть в одном блоке между тегами div

Код:
<div class="lined_tit">
<h3>Тута текст</h3><span class="cntr">15</span>
</div>

Такое возможно? По классу самого span не предлагать :smile: на странице есть несколько элементов с таким классом. За ранее спасибо :smile:
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Код:
;...
$oElems = _IETagNameGetCollection($oIE, 'div')
For $oEl In $oElems
	If $oEl.classname == 'lined_tit' Then
		$iVal = $oEl.lastChild.innerText
		; или так $iVal = _IEPropertyGet($oEl.lastChild, 'innertext')
		ExitLoop
	EndIf
Next
;...
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Вот ещё 2 варианта:
Код:
$iVal = $oIE.document.getElementsByClassName("lined_tit").item(0).getElementsByClassName("cntr").item(0).innerText

Код:
$iVal = $oIE.document.querySelector("div.lined_tit span.cntr").innerText

Только это может не во всех версиях IE работать.
 
Автор
U

uritalex

Новичок
Сообщения
197
Репутация
3
К сожалению на прошло :( выдало это:
Код:
$iVal =  $oEl.lastChild.innerText
$iVal =  $oEl.lastChild^ ERROR
 
Автор
U

uritalex

Новичок
Сообщения
197
Репутация
3
alex33 Ваш первый вариант сработал :smile: только что то не пойму вчера обновил autoit до последней версии и теперь посыпались все функции в которых использовал связку с 'innertext'
Начало выдавать такое:
Код:
If StringInStr($oLink.innertext, $Link) Then
If StringInStr($oLink^ ERROR
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
uritalex [?]
вчера обновил autoit до последней версии
В последней версии разработчики начали думать, что работа с COM объектами должна быть через боль.
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
А у меня вообще, 90% скриптов, в которых используются объекты, после обновления AutoIt до 3.3.14.x, перестали работать, выдавая ошибку "The requested action with this object has failed.", и даже это не помогало для отлова ошибки:
Код:
$oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")

В ообщем, поставил 3.3.12.0, где всё нормально.


Добавлено:
Сообщение автоматически объединено:

Не знаю даже, когда это исправят и исправят ли вообще...
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Выдает ошибку, потому что такого свойства как innertext у объекта нет, есть innerText. А то что не помогла ObjEvent("AutoIt.Error", "MyErrFunc") ну тут вообще нет слов :smile:
 
Автор
U

uritalex

Новичок
Сообщения
197
Репутация
3
Поставил 3.3.12.0 заработало!!! :IL_AutoIt_1:
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
uritalex [?]
К сожалению на прошло
Да, это моя ошибка. Вот исправленный пример.
Код:
$iVal = $oElems = _IETagNameGetCollection($oIE, 'div')
For $oEl In $oElems
    If $oEl.classname == 'lined_tit' Then
		$iVal = $oEl.children(1).innertext
		ExitLoop
    EndIf
 Next
 ConsoleWrite($iVal)




Добавлено:
Сообщение автоматически объединено:

Кстати верхний пример тоже рабочий, если его немного поправить.
Код:
$iVal = $oEl.lastChild.previousSibling.innerText
 
Автор
U

uritalex

Новичок
Сообщения
197
Репутация
3
Спасибо все перепробовал :smile: :beer: :IL_AutoIt_1:
 
Верх