Javascript 无法获取未定义或空引用的属性

Javascript 无法获取未定义或空引用的属性,javascript,internet-explorer,Javascript,Internet Explorer,我继承了一个带有一些时髦代码的网站。在IE 10开始抛出此错误之前,它一直保持正常: Unable to get property 'offsetHeight' of undefined or null reference Line: 27 Char: 1 Code: 0 UR 代码如下: <script type="text/javascript"> function transDiv(){ var theheight=document.getElementById('tran

我继承了一个带有一些时髦代码的网站。在IE 10开始抛出此错误之前,它一直保持正常:

Unable to get property 'offsetHeight' of undefined or null reference Line: 27 Char: 1 Code: 0 UR 
代码如下:

<script type="text/javascript">
function transDiv(){
var theheight=document.getElementById('transcontent').offsetHeight;
document.getElementById('translayer').style.height=theheight+'px';
}
window.onload=transDiv;
setInterval("transDiv()",1); //this handles text resizing through the users browser
</script>
window.onresize = transDiv;

函数transDiv(){
var theheight=document.getElementById('transcontent')。offsetHeight;
document.getElementById('translayer').style.height=theheight+'px';
}
window.onload=transDiv;
setInterval(“transDiv()”,1)//这将通过用户浏览器处理文本大小调整

如有任何想法/帮助,将不胜感激。在Chrome和FF以及客户端版本的IE(8,ugh)中似乎工作得很好

元素没有时间在1毫秒间隔内加载。您可以将代码更改为此作为一种解决方法,以保持完全相同的功能:

function transDiv() {
    var content = document.getElementById('transcontent');
    var layer = document.getElementById('translayer');
    if (!content || !layer)
        return;
    var theheight = content.offsetHeight;
    layer.style.height=theheight+'px';
    window.setTimeout(transDiv, 1);
}
window.onload = transDiv;
但是,由于它似乎是用来处理调整大小的,所以只需捕获事件,而不是使用计时器。去掉
window.setTimeout()
行,并将其添加到代码下面:

<script type="text/javascript">
function transDiv(){
var theheight=document.getElementById('transcontent').offsetHeight;
document.getElementById('translayer').style.height=theheight+'px';
}
window.onload=transDiv;
setInterval("transDiv()",1); //this handles text resizing through the users browser
</script>
window.onresize = transDiv;

元素没有时间在1毫秒间隔内加载。您可以将代码更改为此作为一种解决方法,以保持完全相同的功能:

function transDiv() {
    var content = document.getElementById('transcontent');
    var layer = document.getElementById('translayer');
    if (!content || !layer)
        return;
    var theheight = content.offsetHeight;
    layer.style.height=theheight+'px';
    window.setTimeout(transDiv, 1);
}
window.onload = transDiv;
但是,由于它似乎是用来处理调整大小的,所以只需捕获事件,而不是使用计时器。去掉
window.setTimeout()
行,并将其添加到代码下面:

<script type="text/javascript">
function transDiv(){
var theheight=document.getElementById('transcontent').offsetHeight;
document.getElementById('translayer').style.height=theheight+'px';
}
window.onload=transDiv;
setInterval("transDiv()",1); //this handles text resizing through the users browser
</script>
window.onresize = transDiv;

这意味着页面上没有“id”值为“transcontent”的元素。而且那只是一种可怕的做事方式;该网站一定会吸引一些粉丝。document.getElementById('transcontent')是否返回有效节点?是否尝试将window.onload更改为document.onload?可能DOM尚未完全加载/初始化。@MattFletcher这些都是相同的事件。
setInterval(…,1)
太快了。我也很可能第一次调用发生在document.ready之前……这意味着页面上没有“id”值为“transcontent”的元素。而且那只是一种可怕的做事方式;该网站一定会吸引一些粉丝。document.getElementById('transcontent')是否返回有效节点?是否尝试将window.onload更改为document.onload?可能DOM尚未完全加载/初始化。@MattFletcher这些都是相同的事件。
setInterval(…,1)
太快了。我也很可能第一次调用发生在文档之前…