Get CSS path from Dom element

Вы можете сравнивать DataFrames поэлементно, а затем проверять те строки, где любой из элементов отличается:

indexes = (raw1 != raw2).any(axis=1)
raw4 = raw2.loc[indexes]

Вывод:

    Name  Age  Height
1  Honey   26     NaN
3   Tree    0   155.0
4    Rot   22     NaN
5    NaN   28   170.0

Обратите внимание, что этот подход выиграл не работает, если оба значения из raw1 и raw2 равны NaN (NaN всегда отличается от любого числа, включая NaN).

19
задан jney 1 September 2010 в 21:51
поделиться

1 ответ

function cssPath (e, anchor) {
    var selector;

    var parent = e.parentNode, child = e;
    var tagSelector = e.nodeName.toLowerCase();

    while (anchor && parent != anchor || !anchor && parent.nodeType === NodeTypes.ELEMENT_NODE) {
        var cssAttributes = ['id', 'name', 'class', 'type', 'alt', 'title', 'value'];
        var childSelector = tagSelector;
        if (!selector || parent.querySelectorAll (selector).length > 1) {
            for (var i = 0; i < cssAttributes.length; i++) {
                var attr = cssAttributes[i];
                var value = child.getAttribute(attr);
                if (value) {
                    if (attr === 'id') {
                        childSelector = '#' + value;
                    } else if (attr === 'class') {
                        childSelector = childSelector + '.' + value.replace(/\s/g, ".").replace(/\.\./g, ".");
                    } else { 
                        childSelector = childSelector + '[' + attr + '="' + value + '"]';
                    }
                }
            }

            var putativeSelector = selector? childSelector + ' ' + selector: childSelector;             

            if (parent.querySelectorAll (putativeSelector).length > 1) {
                var siblings = parent.querySelectorAll (':scope > ' + tagSelector);
                for (var index = 0; index < siblings.length; index++)
                    if (siblings [index] === child) {
                        childSelector = childSelector + ':nth-of-type(' + (index + 1) + ')';
                        putativeSelector = selector? childSelector + ' ' + selector: childSelector;             
                        break;
                    }
            }

            selector = putativeSelector;
        }
        child = parent;
        parent = parent.parentNode;
    }

    return selector;
};      
0
ответ дан 30 November 2019 в 02:44
поделиться
Другие вопросы по тегам:

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