我在网站上有以下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有关。
任何帮助都将受到赞赏...提前感谢!
答案 0 :(得分:2)
IE似乎不包含form.elements
集合中的<output>
元素,因此IE中的form.elements['z']
为undefined
。 (如果您点击该链接,则会看到IE10之前不支持<output>
。)其他浏览器的<output>
集合中包含elements
。
将z
变为只读<input>
,或者将<output>
id
与document.getElementById
联系起来{。}}。