鉴于以下form
:
<form id="myForm" action="index.php">
<input type="hidden" name="action" value="list" />
<input type="submit" />
</form>
如何使用IE6获取表单( index.php )的action
属性的值?
提示:我试过了
document.getElementById('myForm').action
和
document.getElementById('myForm').getAttribute('action')
但它们都不起作用。它们都返回input
字段(document.getElementById('myForm').action.value == 'list'
)。
答案 0 :(得分:4)
var action= document.forms.myForm.cloneNode(false).action;
(因为克隆很浅,新表单元素中没有'input name =“action”'来混淆它。)
答案 1 :(得分:4)
使用节点的attributes
集合有一种简单的方法:
document.getElementById("myForm").attributes["action"].value
测试页面试试(也展示了getAttribute的破坏,如David Dorward所说):
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<title>Form Action Access</title>
<script type="text/javascript">
function dotAccess()
{
alert(document.getElementById("myForm").action.value);
}
function getAttributeAccess()
{
alert(document.getElementById("myForm").getAttribute("action"));
}
function attributesAccess()
{
alert(document.getElementById("myForm").attributes["action"].value);
}
</script>
</head>
<body>
<form id="myForm" action="foo">
<input type="hidden" name="action" value="bar">
<input type="button" onclick="dotAccess()" value="form.action">
<input type="button" onclick="getAttributeAccess()" value='form.getAttribute("action")'>
<input type="button" onclick="attributesAccess()" value='form.attributes["action"]'>
</form>
</body>
</html>
答案 2 :(得分:3)
没有一种简单的方法。
动作字段的存在,破坏形式的动作属性和getAttribute在IE中被破坏&lt; 8。
我能想到的唯一方法就是弄乱正则表达式。我强烈建议改变表格,使用不同的字段名称,而不是“行动”,如果可能的话。
var form = document.forms.myForm;
var action = form.getAttribute('action');
if (action === form.elements.action) {
// getAttribute broken;
var string = form.outerHTML;
return string.match(/action=(.*?)[> ]/)[1];
} else {
return action;
}
那个正则表达式可能不够健壮。所以,如果你使用它,请仔细测试。
答案 3 :(得分:0)
我刚刚找到另一种方法:使用或克隆prototypejs中可用的readAttribute
方法。