我創建了一個函數updatePrice,該函數綁定到HTML表單中複選框和單選按鈕上的「click」事件。每個複選框和收音機基本上代表一個項目,其價格作爲這些元素的價值屬性。當我檢查或取消選中任何框時,該函數將觸發表單中的所有元素,並將所有選中項目的總價更新爲我的表單下方的div元素,其ID標記爲「priceOutput」。innerHTML不支持事件處理函數(Javascript)
下面的代碼完美地工作,打印出來:這個項目的價格是$(項目的價格)。
function updatePrice() {
var price = 0
for (i=0;i<=form.length;i++) {
var element = form[i]
if(element.checked) {
price+=parseInt(element.value)
}
document.getElementById("priceOutput").innerHTML = "The price of this item is $" + price + "."
}
}
但是,如果切換周圍的最後一行,該行根本不打印:
function updatePrice() {
var price = 0
for (i=0;i<=form.length;i++) {
var element = form[i]
if(element.checked) {
price+=parseInt(element.value)
}
}
document.getElementById("priceOutput").innerHTML = "The price of this item is $" + price + "."
}
我爲什麼一定要寫線{}中的在爲了工作。價格變量的範圍不會覆蓋整個updatePrice函數嗎?
我對編程還比較陌生,所以請原諒我,如果這是一個基本問題。
是的 - 這就是原因。當'i == form.length'然後'form [i]'產生一個錯誤時,函數退出並且最終的'document.getElementById ...'從不執行。 – davidkonrad
哦,是的,謝謝你!現在看。所以在前者中,它「有效」,因爲錯誤發生在打印行之後,所以在函數退出之前該行仍然被打印,但是在後者中,它並不是因爲該函數在行之前退出被打印。謝謝! – KohLP