-1

我想要做的是获取隐藏表单的名称,在这种情况下名为:6ca3787zz7n149b2d286qs777dd8357b,问题是,表单名称总是在变化,唯一相同的是它的值,即 1,好吧 99%当时,我猜唯一100%相同的东西可以用来检索表单名称是:L2ZvcnVtcy8,它就在它上面。我也试图通过在浏览器(chrome)上手动运行 javascript 来做到这一点,因此请记住 javascript 代码是通过 url 栏运行的位置,如 javascript:codegoeshere,我如何获取表单名称,--> (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并且该元素是<form>,您可以使用:

    document.getElementsByName('login')[0].getElementsByTagName('input')[4].name
    
  • 如果return <input>有一个固定的name属性,那么这应该可以工作(额外.nextSibling的是因为它们之间有一个文本节点):

    document.getElementsByName('return')[0].nextSibling.nextSibling.name
    
  • 如果其中任何其他<input>s 具有固定名称,则可以使用(在示例中我使用<input>with name=task):

    document.getElementsByName('task')[0].parentNode.getElementsByTagName('input')[4].name);
    
  • 如果您真正拥有的是该固定值,则必须使用for循环遍历所有<input>s:

    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 回答