0

我在网站上有以下 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:无法设置属性“值”的值:对象为空或未定义

我在 SO 上多次看到此错误,但所有解决方案都与 .Net 或嵌入 Flash 的某些问题有关。

任何帮助将不胜感激......在此先感谢!

4

1 回答 1

2

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

要么制作z成只读的<input>,要么给你<output>一个id并用document.getElementById.

于 2012-12-04T18:20:38.060 回答