变量赋值给getElementById,不起作用

Sin*_*1ty 4 javascript dom getelementbyid

我试过看看stackoverflow,但不能找到和我一样的问题 - 我确定这个问题很容易解决,但不知何故......它不起作用.

我有一些输入,它们将以计算器格式添加/乘/减/除等.我想要的是getElementById通过在我的功能块之外声明变量来删除不必要的引用(我不想要任何花哨的多重getElementById赋值).

我的Javascript如下:

//Declarations: designed to minimze calls to document.getElementByID
    var number1 = document.getElementById("num1");
    var number2 = document.getElementById("num2");
    var numAnswer = document.getElementById("answer");

    //Add together two numbers
    function add()
    {
        numAnswer.value = parseFloat(number1.value) + parseFloat(number2.value);
    }
Run Code Online (Sandbox Code Playgroud)

它让我疯狂 - 如果我拿出变量而只是使用普通的旧document.getElementById,一切正常.这应该很容易,但它只是不起作用.我已经检查了拼写,这一切似乎都没问题 - 有什么我想念的吗?

nnn*_*nnn 5

如果您在问题中显示的脚本显示在页面源中的元素之后,则此操作将起作用.否则浏览器尚未解析这些元素,因此无法通过ID找到它们.

让它工作的另一种方法是在一个onload或文档就绪的处理程序中进行分配,因为无论何时onload发生文档就绪,所有元素都可以访问,无论它们在页面源中的位置如何.

  • 最简单的方法是将所有脚本块移动到文档的末尾,就在关闭`</ body>`标记之前 (3认同)