2012-12-04 46 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

相關問題