我有一个包含多个表单的页面。我正在调用一个函数 localize(),例如<body onload = 'localize()'>
.
我使用时在 localize() 函数内部aForms[0] = document.getElementById('form1');
(aForms 是一个存储所有表单元素的数组)。
对于第一个表单,它可以工作,但对于后续表单,它在 IE10 中获取空值。此页面在 IE8 和 IE9 上运行良好。
忘了提到我的页面在框架内。
请帮忙。
我有一个包含多个表单的页面。我正在调用一个函数 localize(),例如<body onload = 'localize()'>
.
我使用时在 localize() 函数内部aForms[0] = document.getElementById('form1');
(aForms 是一个存储所有表单元素的数组)。
对于第一个表单,它可以工作,但对于后续表单,它在 IE10 中获取空值。此页面在 IE8 和 IE9 上运行良好。
忘了提到我的页面在框架内。
请帮忙。
最好将 JavaScript 与 HTML 分开。此外,您应该在结束时执行 JavaScript,<body>
因为您的页面会加载得更快。如果它在 中<head>
,您需要在实际查看您的网站之前加载整个脚本。
所以设置你的 HTML 是这样的:
<!doctype HTML>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>Your Title</title>
<head>
<body>
<div></div>
<!-- Your site here -->
<script src="myJavaScript.js"></script>
</body>
</html>
然后在你的 JavaScript 文件中,监听 onload 事件:
window.onload = function () {
// Use document.forms unless you need specific ones
var forms = [
document.getElementById('form1'),
document.getElementById('form2')
];
console.log(forms[0]);
console.log(forms[1]); // Not null
};
见:http: //jsfiddle.net/C7mh2演示
身体onload
工作正常,可能是你的代码有其他问题。aForms[0] 是对表单的引用,而不是包含所有元素的数组。
你必须使用
aForms[0] = document.getElementById('form1')
var elements =aForms[0].getElementsByTagName('input');
// Now elements will contain all the input elements inside that aForm[0] i.e form1
for (i=0; i<elements.length; i++){
//some codes...
}
您可以使用document.forms
这返回几乎所有浏览器都支持的表单集合。这是一个例子
<body>
<form></form>
<form></form>
</body>
window.onload =function()
{
var Forms = document.forms;
for(var i=0;i<Forms.length;i++)
{
// Form[0] will contain reference to first form
// You can use Form[i] to refer to respective form
// If you want to check for id then following code may help you
// Even you can check for name to by .name property
if(Forms[0].id =='yourid')
{
// this is the form i want
}
}
}
如果您的表单包含在 iframe 中并且在同一个域中
var Frames = document.getElementById( 'yourIframeId' );
var DOC = Frames.contentDocument || Frames.contentWindow.document;
var aForm = DOC.getElementById( 'form1');