页面加载时Internet Explorer调试器javascript错误

时间:2013-06-18 13:41:13

标签: javascript

每次我在图10中运行页面时,JavaScript调试器窗口出现并显示“样式”的未定义错误。我尝试使用JavaScript方式而不是jQuery。

这证明是麻烦......

var displayPackets = document.getElementById('pnl_emailFtp');
// set style to 'display:none;'
displayPackets.style.display = "none";

var smlPkt = document.getElementById('small-packet');
var lrgPkt = document.getElementById('large-packet');

// Shows the 'panel' where the 'small/Large' pkts are.
var radButton = document.getElementsByName('secureData');
// Check radio button has been clicked and show 
// Small/Large packet boxes.
if (radButton.checked = true) {
    displayPackets.style.display = "block";
} else {
    displayPackets.style.display = "none";
}

我做错了吗?

2 个答案:

答案 0 :(得分:1)

可能错误在

var displayPackets = document.getElementById('pnl_emailFtp');

如果由于某种原因displayPackets不是DOM元素,您可能会收到您评论的错误。

如果文档中存在pnl_emailFtp id元素,则可能是在加载或准备好文档DOM之前尝试检索对它的引用。在这种情况下,您可以尝试:

window.load = function(){ ... }

好像你正在使用:

$.ready(function(){ ... })

有关其他选项,另请参阅this Q&Athis Q&A

提示调试IE上的奇怪错误

使用内置alert()功能。它会停止JavaScript执行,直到它被接受,因此它可以用作断点。

程序如下:

  1. 在脚本的第一行放置alert( 'ok' );(或者至少在您认为有问题的行之上)。

       
    alert( 'ok' );
    var displayPackets = document.getElementById('pnl_emailFtp');
    
  2. 加载您的页面...

    1. 如果显示提醒,请将其放到下一行并重复 2

      var displayPackets = document.getElementById('pnl_emailFtp');
      alert( 'ok' );
      displayPackets.style.display = "none";
      
    2. 如果未显示提醒,请将其放到上一行并重复 2

  3. 当您点击 2.1 2.2 无限重复的行时,您会得到导致问题的代码行。

答案 1 :(得分:1)

尝试将代码放在window.onload处理函数中,如下所示:

window.onload = function () {
  // Your code comes here
};

或者在结束body标记之前放置脚本。

当您在jQuery的$(document).ready(...)中使用此片段时,执行会延迟,直到所有DOM元素都可用。在解析期间执行head中的代码时,body及其内容尚不存在。