我想要做的是获取隐藏表单的名称,在本例中命名为:6ca3787zz7n149b2d286qs777dd8357b,问题是,表单名称总是更改,唯一相同的是它的值,即1,很好99%的时间,唯一100%相同,我猜可能以某种方式用于检索表单名称是:L2ZvcnVtcy8就在它上面。我也试图通过在浏览器(chrome)上手动运行javascript来做到这一点,所以记住javascript代码通过url栏运行,如javascript:codegoeshere,我如何获得表单名称, - &gt ;(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>
答案 0 :(得分:0)
检查this fiddle 中下面的所有解决方案。
一些可能性:
假设只有一个元素包含name
login
且该元素为<form>
,您可以使用:
document.getElementsByName('login')[0].getElementsByTagName('input')[4].name
如果return
<input>
具有固定的name
属性,那么这应该有效(额外的.nextSibling
是因为它们之间有文本节点) :
document.getElementsByName('return')[0].nextSibling.nextSibling.name
如果其中<input>
中的任何一个具有固定名称,您可以使用(在示例中,我将<input>
与name=task
一起使用):
document.getElementsByName('task')[0].parentNode.getElementsByTagName('input')[4].name);
如果您真正的所有内容都是固定值,那么您必须在所有for
s中使用<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]
等进行测试,直到找到预期要素。
答案 1 :(得分:-1)
如果你使用JQuery,这真的很容易:
$('input[type="hidden"]:eq(3)').attr('name')
此处您的代码正在运行: http://jsfiddle.net/7CHYa/