SCRIPT5007:无法设置属性“value”的值:object为null或undefined

时间:2012-12-04 17:56:08

标签: javascript internet-explorer

我在网站上有以下JS费用计算器: http://jsfiddle.net/billsinc/HMFYK/

function updateOutput() {

//get form 
var form = document.getElementById('calc');
var x = form.elements['x'].value;
x = x.replace(/,/g, "");

// determine multiplier
if (x > 11111 && x < 83333) {
    y = 0.009;
}
if (x >= 83333 && x < 166667) {
    y = 0.007;
}
if (x >= 166667 && x < 250000) {
    y = 0.006;
}
if (x >= 250000) {
    y = 0.005;
}

// add data addon
if (form.elements['pd'].checked === true) {
    p = 250;
}
else {
    p = 0;
}

// calculate monthly price
if (x > 11111) {
    form.elements['z'].value = Math.round(eval(parseInt(x, 10) * y + p));
}
else {
    form.elements['z'].value = Math.round(eval(100 + p));
}
}​

如果您输入“12000”(或某个数字大于11,111),它将在FF,Chrome和Safari中正确计算。

我一直无法让它在IE中运行。输入值后会抛出以下错误:

  

SCRIPT5007:无法设置属性“value”的值:object为null或undefined

我在SO上多次看过这个错误,但是所有的分辨率都与.Net或嵌入Flash有关。

任何帮助都将受到赞赏...提前感谢!

1 个答案:

答案 0 :(得分:2)

IE似乎不包含form.elements集合中的<output>元素,因此IE中的form.elements['z']undefined。 (如果您点击该链接,则会看到IE10之前不支持<output>。)其他浏览器的<output>集合中包含elements

z变为只读<input>,或者将<output> iddocument.getElementById联系起来{。}}。