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:プロパティ'value'の値を設定できません:オブジェクトがnullまたは未定義です

SOでこのエラーを何度も見ましたが、すべての解像度は.NetまたはFlashの埋め込みに関する問題に関連しています。

どんな助けでもいただければ幸いです...事前に感謝します!

4

1 に答える 1

2

IEにはコレクションに<output>要素が含まれていないようですので、IEにも含まれています。(リンクをクリックすると、IE10までサポートされていないことがわかります。)他のブラウザーでは、コレクションにsが含まれています。form.elementsform.elements['z']undefined<output><output>elements

z読み取り専用にするか<input>、を与えて<output>idで取得しdocument.getElementByIdます。

于 2012-12-04T18:20:38.060 に答える