0

へのパスを返すこの関数がありますel。ただし、この関数はページに存在しない要素を追加することがあります。この場合:

<table>
<tr><td></td><tr>
</table>

td へのパスは次のようになりますtable > tbody > tr > td。この機能の問題は何ですか?

function getDomPath(el) {
        element = el;
        if (!(el instanceof Element)) return;
        var path = [];
        while (el.nodeType === Node.ELEMENT_NODE &&  el.id != "jobs") {
            var selector = el.nodeName.toLowerCase();
            if (el.id) {
                selector += '#' + el.id;
            }
            else if(el.className){
                console.log(el.className);
                selector += '.' + el.className;
            }
            else {
                var sib = el, nth = 1, count = 1;
                while (sib.nodeType === Node.ELEMENT_NODE && (sib = sib.previousSibling)  && nth++){
                    console.log(Node.ELEMENT_NODE)
                    console.log(el.previousSibling);
                    console.log(el);
                    count += $(el).prevAll().size();
                };
                selector += ":nth-child("+count+")";
            }
            path.unshift(selector);
            el = el.parentNode;
        }
        return path.join(" > ");
    };
4

2 に答える 2

3

問題が要素にある場合はtbody、それを追加するのは関数ではなく、ブラウザー自体であることを知る必要があります。Firebug または Chrome の Web 開発者ツールを使用してページを確認します。

この SO answerを見てください。

于 2013-10-28T09:42:39.560 に答える