6

私はプログラミングにまったく慣れていないので、html 要素をクリックすると Xpath を生成する必要があります。たとえば、ユーザー名のテキスト ボックスをクリックすると、html/head/body/tr[1]/table[2]..... などのような xpath が表示されます。主なことは、できないことです。私のアプリケーションはIEで完全に実行されるため、firebugを使用してください。xpath を取得するために多くの fxn を見て、それを統合しようとしましたが、戻り値を取得できません。jquery click() 関数を使用して値を取得した単純なコード スニペットが機能していません。関数で html 要素を渡すことができません。このサイトからのみ取得した xpath 関数です。私のコードは以下です。

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>click demo</title>
<style> 
p
{ 
   color: red;    
   margin: 5px;
   cursor: pointer; 
}  
p:hover
 { 
   background: yellow; 
 }
</style> 
<script src="http://code.jquery.com/jquery-1.9.1.js">
</script>
</head>
<body> 
<p id ="test">First Paragraph</p>
<p>Second Paragraph</p>
<p>Yet one more Paragraph</p>
<script>

$( "#test" ).click(function() { var value= $(this).getXPath();
alert(value) });

function getXPath( element )
{
var val=element.value;
alert("val="+val);
    var xpath = '';
    for ( ; element && element.nodeType == 1; element = element.parentNode )
    {
        alert(element);
        var id = $(element.parentNode).children(element.tagName).index(element) + 1;
        id > 1 ? (id = '[' + id + ']') : (id = '');
        xpath = '/' + element.tagName.toLowerCase() + id + xpath;
    }
    return xpath;
}
</script>
</body>
</html> 
4

4 に答える 4

23

スクリプトをに変更

$( "#test" ).click(function() { var value= getXPath( this  );
alert(value) });

function getXPath( element )
{
var val=element.value;
    //alert("val="+val);
    var xpath = '';
    for ( ; element && element.nodeType == 1; element = element.parentNode )
    {
        //alert(element);
        var id = $(element.parentNode).children(element.tagName).index(element) + 1;
        id > 1 ? (id = '[' + id + ']') : (id = '');
        xpath = '/' + element.tagName.toLowerCase() + id + xpath;
    }
    return xpath;
}
于 2013-09-04T06:31:01.170 に答える
1

これはあなたを助けることができます

フィドル

$('p').click(function(){
parentEls = $(this).parents()
            .map(function () {
                  return this.tagName;
                })
            .get().join(", ");

    alert(parentEls);

    });
于 2013-09-04T06:31:34.563 に答える
-1

このコードは、要素のパスを提供します。

      $('a').click(function () {
            var XPATH = "";
            var FindParent = true;
            var _parent = $(this);

            while (FindParent) {
                var myParent = _parent.parent();
                if (myParent != null) {
                    XPATH += myParent.prop("tagName") + "/";
                    _parent = myParent;
                }
                else {
                    FindParent = false;
                }

            }
        })
于 2013-09-04T06:34:26.663 に答える