onload功能在IE10中是否正常工作?

时间:2013-10-10 06:00:47

标签: javascript jquery internet-explorer internet-explorer-10

我有一个包含多个表单的页面。我正在调用像<body onload = 'localize()'>这样的函数localize()。

当我使用aForms[0] = document.getElementById('form1');时,在localize()函数内部 (aForms是一个存储所有表单元素的数组)。

对于它的第一个表单,但对于后续表单,它在IE10中获取空值。 这个页面适用于IE8和IE9。

忘记提及我的页面在框架内。

请帮忙。

2 个答案:

答案 0 :(得分:2)

最好将JavaScript与HTML分开。此外,您应该在<body>的末尾执行JavaScript,因为您的页面加载速度会更快。如果它在<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了解演示

答案 1 :(得分:0)

正文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');