2012-12-04 115 views
0

我有一个网站下面的JS费用计算器: http://jsfiddle.net/billsinc/HMFYK/SCRIPT5007:无法设置属性“价值”的价值:对象为空或未定义

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:无法设置属性“价值”的价值:对象为空或未定义

我已经看到了这个错误的次数在SO上,但所有的解决方案都与.net或嵌入Flash的一些问题有关。

任何帮助,将不胜感激...先谢谢了!

+1

NITPICK:你应该使用'else if'。 – epascarello

回答

2

看来IE在form.elements集合中不包含<output>元素,所以在IE中form.elements['z']undefined。 (如果你点击链接,你会发现在IE10之前不支持<output>)。其他浏览器在elements集合中包含<output>

要么让z成只读的<input>,或给你的<output>iddocument.getElementById得到它。

+0

谢谢,我使用了只读''选项 – Bill

相关问题