-1

私がしたいのは、この場合は6ca3787zz7n149b2d286qs777dd8357bという名前の隠しフォームの名前を取得することです。問題は、フォーム名が常に変化することです。その時点で、フォーム名を取得するために何らかの形で使用できると私が推測する 100% 唯一のものは、そのすぐ上にある L2ZvcnVtcy8 です。また、ブラウザー (chrome) で JavaScript を手動で実行してこれを実行しようとしています。そのため、JavaScript コードがこの javascript:codegoeshere のように URL バーを介して実行される場所を念頭に置いて、フォーム名を取得するにはどうすればよいですか? --> (6ca3787zz7n149b2d286qs777dd8357b)?

<form action="index.php?feature=xxxxxx" method="post" name="login">
                        <input type="submit" name="submit" class="button" value="Logout" />
                        <input type="hidden" name="option" value="username" />
                                                <input type="hidden" name="task" value="logout" />
                        <input type="hidden" name="return" value="L2ZvcnVtcy8=" />
                        <input type="hidden" name="6ca3787zz7n149b2d286qs777dd8357b" value="1" />                   </form>
                    </li>
4

2 に答える 2

0

このフィドルで以下のすべての解決策を確認してください。

いくつかの可能性:

  • name loginを持つ要素が 1 つだけあり、その要素が であると仮定すると<form>、次を使用できます。

    document.getElementsByName('login')[0].getElementsByTagName('input')[4].name
    
  • return <input>に固定name属性がある場合、これは機能するはずです (追加.nextSiblingは、それらの間にテキスト ノードがあるためです)。

    document.getElementsByName('return')[0].nextSibling.nextSibling.name
    
  • これらの s の他のいずれか<input>に固定名がある場合は、次を使用できます (例では<input>withを使用しますname=task)。

    document.getElementsByName('task')[0].parentNode.getElementsByTagName('input')[4].name);
    
  • 本当にその固定値しかない場合は、すべてのsforをループする必要があります。<input>

    var lastResortName = (function () { for(var i=0, ipts = document.getElementsByTagName('input'), n = ipts.length; i < n; i++) { if (ipts[i].value === "L2ZvcnVtcy8=") return ipts[i+1].name; } })();
    

注: 上記の属性に重複した値がある場合は、予想される要素が見つかるまでname、インデックス ( [0][1]など) を使用してテストします。[2]

于 2013-07-20T20:55:09.503 に答える
-1

JQuery を使用すれば、これは非常に簡単です。

$('input[type="hidden"]:eq(3)').attr('name')

ここで実行中のコード: http://jsfiddle.net/7CHYa/

于 2013-07-20T20:52:31.493 に答える