2017-02-03 113 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中,通常不会这样做.. –