函数外部的数组是空间分配的,但函数外部的变量是不是在javascript中分配的原因么?

时间:2013-06-06 18:08:27

标签: javascript html arrays dom getelementbyid

这是我的javascript代码:

var strp = [0,19,26,33,40,46,49,57,61,65,67,73,76];
var i = document.getElementById("length").value;
function calculator(){

    document.write("the total cost is " + strp[document.getElementById("length").value]);

     document.write("total is ");
     document.write(strp[i]);   
}

我想在这里写一个计算函数。和HTML部分是这样的:

<form>         
    select size   : <select id="length">
                    <option value="0">Please Choose One...</option>
                    <option value="1">10 inches</option>
                    <option value="2">12 inches</option>
      </select>
    <input type="button" value="Calculate" onclick="calculator()" />
</form>

当我在浏览器中执行此代码时,我通过'getelementbyid value'访问数组,我得到了正确的答案。但是当我将getelmentbyid值存储在一个变量中,并使用该变量来访问该数组时,输出是未定义的,为什么会这样?

2 个答案:

答案 0 :(得分:1)

我的猜测是i未定义,因为javascript在html之前呈现。因此,当创建i时,没有具有id长度的元素。尝试将javascript放在html下面来解决这个问题。

答案 1 :(得分:1)

document.write()消除了页面的所有先前内容。请使用一些适当的DOM操作方法,例如innerHTMLappendChild()