Javascript document.getElementById在函数中失败

Javascript document.getElementById在函数中失败,javascript,Javascript,今晚使用document.getElementById时,我遇到了奇怪的行为。在Firefox3和Safari中重复 基本上,它在示例1中找到id为“divid”的div。然而,在示例2中,它总是返回null。这是怎么回事 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http:/

今晚使用document.getElementById时,我遇到了奇怪的行为。在Firefox3和Safari中重复

基本上,它在示例1中找到id为“divid”的div。然而,在示例2中,它总是返回null。这是怎么回事

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<script type="text/javascript">

addelement = function(){
    alert( document.getElementById('divid') );  
}

//Example1
window.onload = function(){ alert( document.getElementById('divid') ); }
//Example2
window.onload = addelement();

</script>
<body>

    <div id="divid" class="divclass">
        <p>Test</p>
    </div>

<body>

</html>

addelement=函数(){
警报(document.getElementById('divid');
}
//例1
window.onload=function(){alert(document.getElementById('divid');}
//例2
window.onload=addelement();
试验


写这行时:

window.onload = addelement();
…您实际上没有将添加元素分配给window.onload。您正在执行添加元素,然后将结果分配给window.onload

将行更改为:

window.onload = addelement;

cbp已经给出了正确的答案:函数“addelement()”在javascript中也是一个对象“addelement”

当你说

x = addelement() ;
x = addelement ;
将addelement()返回的值(在本例中,返回值为null)赋给变量x

当你说

x = addelement() ;
x = addelement ;
将函数addelement()指定给变量x

在将addelement分配给onload事件时,您希望在事件发生时调用该函数。所以你不用括号写

window.onload = addelement ;
(只是澄清一下,因为美国海关与边境保护局已经给出了正确答案,但原因可能并不明显。)