document.getElementById('id')是null javascript错误

时间:2010-10-12 02:49:15

标签: javascript null

出于某种原因,我在第7行遇到document.getElementById('id') is null JS错误,并带有以下标记和脚本:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Quadratic Root Finder</title>
<script>
document.getElementById('calculate').onclick = function calculateQuad()
{
    var inputa = document.getElementById('variablea').value;
    var inputb = document.getElementById('variableb').value;
    var inputc = document.getElementById('variablec').value;

    root = Math.pow(inputb,2) - 4 * inputa * inputc;
    root1 = (-inputb + Math.sqrt(root))/2*inputa
    root2 = (-inputb + Math.sqrt(root))/2*inputa 

    document.getElementById('root1').value = root1;
    document.getElementById('root2').value = root2;
    if(root<'0')
    {
        alert('This equation has no real solution.')
    }
    else {
        if(root=='0')
        {
            document.getElementById('root1').value = root1
            document.getElementById('root2').value = 'No Second Answer'
        }
        else {
            document.getElementById('root1').value = root1
            document.getElementById('root2').value = root1
            }
        }
};
document.getElementById('erase').onlick = this.form.reset();
</script>
<style>
#container
{
    text-align: center;
}
</style>
</head>

<body>
<div id="container">
<h1>Quadratic Root Finder!</h1>
<form id="form1">
    a:<input id="variablea" value="" type="text">
    <br/>
    b:<input id="variableb" value="" type="text">
    <br />
    c:<input id="variablec" value="" type="text">
    <br />
    <input id="calculate" value="Calculate!" type="button">
    <input id="erase" value="Clear" type="button">
    <br />
    <br />
    Roots:
    <br />
    <input id="root1" type="text" readonly>
    <br />
    <input id="root2" type="text" readonly>
</form>
</div>
</body>
</html>

这里真正的问题是什么?

6 个答案:

答案 0 :(得分:6)

确实是null。您的元素尚未存在于页面上。

或者:

  • 移动代码下方的<script>
  • 添加window.onload活动。

答案 1 :(得分:2)

如果您不想包含jQuery,那么document.ready = function () {}也可以正常工作。

答案 2 :(得分:2)

或者:window.onload = function(){}也适用

答案 3 :(得分:0)

在实际运行javascript时,没有id为“calculate”的元素。您需要确保在创建所需元素后运行javascript。我的建议是使用像jquery这样的通用javascript框架。然后,您只需附加脚本即可在dom上运行:

$(document).ready(function() {
    // Handler for .ready() called.
});

答案 4 :(得分:0)

您可以通过将脚本移动到正文末尾来修复它,或者尝试使用window.onloadwindow.addEventListenner
检查http://v3.thewatchmakerproject.com/journal/168/javascript-the-dom-addeventlistener-and-attachevent
http://javascript.about.com/library/blonload.htm

答案 5 :(得分:0)

  1. 使用windows.onload
  2. 在“body end tag”下面添加链接文件脚本或脚本