Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 读取IE6中的表单操作属性,如果表单有一个名为;行动“;_Javascript_Html_Internet Explorer 6_Forms - Fatal编程技术网

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>