Javascript 读取IE6中的表单操作属性,如果表单有一个名为;行动“;
给出下面的Javascript 读取IE6中的表单操作属性,如果表单有一个名为;行动“;,javascript,html,internet-explorer-6,forms,Javascript,Html,Internet Explorer 6,Forms,给出下面的表格: <form id="myForm" action="index.php"> <input type="hidden" name="action" value="list" /> <input type="submit" /> </form> 及 但两者都不起作用。它们都返回input字段(document.getElementById('myForm')。action.value=='list')。没有简单的方法
表格
:
<form id="myForm" action="index.php">
<input type="hidden" name="action" value="list" />
<input type="submit" />
</form>
及
但两者都不起作用。它们都返回
input
字段(document.getElementById('myForm')。action.value=='list'
)。没有简单的方法
在IE<8中,动作字段的存在,破坏了窗体和getAttribute的动作属性
我能想到的唯一方法就是使用正则表达式。如果可能的话,我强烈建议将表单更改为使用与“action”不同的字段名称
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;
}
这个正则表达式可能不够健壮。所以,如果你真的使用它,就要努力测试它。大卫说得对。不过,这里有一个比正则表达式更简单的方法:
var action= document.forms.myForm.cloneNode(false).action;
(因为克隆很浅,在新表单元素中没有“input name=“action”来混淆它。)我刚刚找到了另一种方法:使用或克隆prototypejs中可用的方法。有一种简单的方法,使用节点的集合:
document.getElementById("myForm").attributes["action"].value
测试页面以试用它(还演示了getAttribute的脆弱性,如David Dorward的回答所述):
表单操作访问
函数dotAccess()
{
警报(document.getElementById(“myForm”).action.value);
}
函数getAttributeAccess()
{
警报(document.getElementById(“myForm”).getAttribute(“action”);
}
函数属性访问()
{
警报(document.getElementById(“myForm”).attributes[“action”].value);
}
现在答案应该是这样的!“这是你的选择”和“这是我的发现”谢谢。
var action= document.forms.myForm.cloneNode(false).action;
document.getElementById("myForm").attributes["action"].value
<!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>