Я могу использовать XPath для фильтрации элементов свойствами CSS?

Или сделайте я должен сделать что-то вроде этого:

var nodes = document.childNodes;
for (var i in nodes) {
    if (window.getComputedStyle(nodes[i], null).getPropertyValue('someproperty') == 'somevalue')
        // do stuff
}

Править:

Я не очень знаком с XPath. 'Простой' удар в проблеме был бы чем-то вроде этого:

function test() {
    var resultSet = document.evaluate("//*[@float='left']", document.body, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
    for (var i = 0; i < resultSet.snapshotLength; i++) {
        var element = resultSet.snapshotItem(i);
        alert(element);
    }
}

Но неудивительно это не работает с тех пор float свойство, не атрибут...

1
задан int3 25 April 2010 в 11:36
поделиться

2 ответа

Как сказал ранее Вьет и кнут, вы можете использовать селекторы атрибутов и функции сопоставления строк: https://www.w3schools.com/xml/xsl_functions.asp#string .

Не путайте XPath с Javascript :)

У меня есть подсказка. Допустим, у вас есть узел:

<a href="http://google.com" style="padding: 10px; float: left; margin: 10px auto;">Look at me!</a>

Используйте fn: substring-after ("padding: 10px; float: left;", "float:") , чтобы получить "left; margin: 10px авто; ".

Затем используйте fn: substring-before ("left; margin: 10px auto;", ";") , чтобы получить "left" .

После этого используйте fn: normalize-space ("left") , чтобы получить "left" :)

1
ответ дан 3 September 2019 в 01:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: