【问题标题】:document.getElementById() returns null on IE9document.getElementById() 在 IE9 上返回 null
【发布时间】:2012-10-12 05:23:29
【问题描述】:

我正在处理一个弹出窗口,我在使用 Internet Explorer 9 时遇到了一些困难。这段代码给我带来了麻烦:

var popUp= document.getElementById('projectInfo');
popUp.style.left=(tempX-310)+'px';
popUp.style.top=(tempY-110)+'px';

在 IE9 中(未在之前的版本中测试过),popup 为空。此外,我尝试在正文结束标记之前包含我的 .js 文件,并将我的函数包装在“document.ready()”函数中,但这些都不起作用。相同的代码在 Opera、Chrome 和 Firefox 中运行良好。 有谁知道怎么回事?

注意:该函数是在我的 html 的 body 的 onLoad 属性中调用的。

【问题讨论】:

  • 可以包含 HTML 吗?
  • 这些链接看起来很相关: - social.msdn.microsoft.com/Forums/zh/iewebdevelopment/thread/… - code.google.com/p/svgweb/issues/detail?id=616 您是否在 HTML 中使用了任何非标准的 HTML 属性 - 或者可能是 svgweb 之类的东西?
  • @Trevor 那应该是TypeError: Cannot call method 'getElementById' of null 错误。
  • 您好 Ziesemer,感谢您抽出宝贵时间。我没有使用 svgweb 也没有使用非标准的 HTML 属性。就是这个简单的 div <div id='projectInfo' class='popUp' style='left:200px; top:100px;'>
  • 有没有可能有 两个 元素具有相同的 id projectInfo

标签: javascript internet-explorer getelementbyid


【解决方案1】:

不使用函数是不行的

 window.onload = function() {
   var popUp= document.getElementById('projectInfo');
   popUp.style.left=(tempX-310)+'px';
   popUp.style.top=(tempY-110)+'px';
 }

【讨论】:

    【解决方案2】:
    【解决方案3】:

    在以前的 IE 版本(显然是 Chrome 和 Firefox)中,getElementById 会检查具有给定 id 的对象,如果没有找到,它将获取具有该名称的元素。

    IE9 不这样做,因此您需要确保您有一个 id = projectInfo 的元素,而不仅仅是 name=projectInfo。我们刚刚在我们的一个应用程序中发现了这一点。不太好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-25
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 2015-02-02
      • 2011-11-01
      • 1970-01-01
      相关资源
      最近更新 更多