2017-02-03 132 views
0

我的JavaScript代碼不工作,它應該計算午餐菜單項的總價格並給出總結果,但是沒有任何結果。該html工作正常,所以我只是在這裏寫javascript部分,它很短。我從字面上遵循指示來獲得這段代碼,所以我沒有得到什麼錯誤。謝謝:)Javascript代碼不起作用

function calcTotal() 
{ 
    var itemTotal=0; 
    var items=document.getElementsByTagName("input"); 
    //collects them into a NodeList object, which has indices 

    for(var i=0;i<5;i++) 
    { 
     if(items[i].checked) 
     itemTotal+=(items[i].value*1); //the *1 turns it into a number 
    } 
    document.getElementById("total").innerHTML="Your order total is $"+itemTotal + ".00"; 
    var submitButton = document.getElementById("sButton"); 
    if(submitButton.addEventListener) 
    { 
     submitButton.addEventListener("click",calcTotal,false); 
    } 

    else if(submitButton.attachEvent) 
    { 
     submitButton.attachEvent("onclick", calcTotal); 
    } 
} 
+0

請顯示HTML。 –

+0

請檢查如何創建一個[最小化,完整和可驗證的示例](http://stackoverflow.com/help/mcve) – Hamms

+0

分離模型和視圖將是很好,更容易調試......這是不可能的根據您的示例代碼重現錯誤。 – inf3rno

回答

1

好了,我們需要看到的HTML,但乍看之下,我會說這是因爲您要設置事件的回調將不會被調用內部的事件綁定除非你設置了事件綁定。你必須設置那些拳頭:

// First set up the event handling 
var submitButton = document.getElementById("sButton"); 

// In this case, you can just check window to see if it has the property 
if(window.addEventListener) { 
    submitButton.addEventListener("click",calcTotal,false); 
} else if(window.attachEvent) { 
    submitButton.attachEvent("onclick", calcTotal); 
} 

// And, have the callback separate 
function calcTotal() { 
    var itemTotal=0; 
    var items=document.getElementsByTagName("input"); 
    //collects them into a NodeList object, which has indices 

    for(var i=0;i<5;i++) { 
     if(items[i].checked) 
     itemTotal+=(items[i].value*1); //the *1 turns it into a number 
    } 

    document.getElementById("total").innerHTML="Your order total is $"+itemTotal + ".00"; 
} 
+0

這不是真正的問題,但感謝您的迴應! –

+0

這可能不是唯一的問題,但它絕對是一個問題。你不能在一個函數中設置一個事件處理程序,除非它處理它所處理的事件,否則它不會被調用。 –

+0

這是真的在JavaScript?因爲我已經看到很多奇怪的事情發生在JavaScript中,通常不會這樣做.. –