Javascript innerHTML不更新
我试图更新元素的innerHTML,但没有得到任何输出 每次点击玉米卷的图片时,玉米卷的价格都应该加到总数中。值是数字,而不是字符串 任何帮助都是感激的,我被难倒了Javascript innerHTML不更新,javascript,events,innerhtml,Javascript,Events,Innerhtml,我试图更新元素的innerHTML,但没有得到任何输出 每次点击玉米卷的图片时,玉米卷的价格都应该加到总数中。值是数字,而不是字符串 任何帮助都是感激的,我被难倒了 (函数(){ var T1=document.querySelector('#taco1'); T1.addEventListener(“单击”,函数(e){ 如果(e.target.tagName==“IMG”){ var Total=document.getElementById(“Total”).textContent; v
(函数(){
var T1=document.querySelector('#taco1');
T1.addEventListener(“单击”,函数(e){
如果(e.target.tagName==“IMG”){
var Total=document.getElementById(“Total”).textContent;
var price=document.getElementById(“p1”).textContent;
var nbrprice=parseInt(价格);
var nbrotal=parseInt(总计);
console.log(“nbrprice的值为”+nbrprice)
log(“nbrprice是一个”+类型(nbrprice));
log(“NBRTOAL是一个”+类型(NBRTOAL));
var总和=数量(价格)+数量(总额);
log(“sum是一个”+类型(sum));
console.log(“总和的值为”+sum);;
}
var sumtxt=(总和+价格);
Total.innerHTML=sumtxt.toString();
控制台日志(总计);
},假);
})();代码>
塔可一号价格:4
塔可二号价格:5元
总额:0美元
这是预期工作为什么
您需要设置元素的innerHTML
,以便更新该元素
var Total = document.getElementById("Total");
//...
var nbrTotal = parseInt(Total.textContent);
//...
Total.innerHTML=sumtxt.toString();
应该可以工作您使用的错误是,TOTAL witch上的InnerHTML设置如下
var Total = document.getElementById("Total").textContent;
而不是仅在中使用innerHTML
var Total = document.getElementById("Total");
请参见此处:当您单击#taco1
时,将值添加到总数中。
请在此处尝试:
(函数(){
var T1=document.querySelector('#taco1');
T1.addEventListener(“单击”,函数(e){
如果(e.target.tagName==“IMG”){
var Total=document.getElementById(“Total”).textContent;
var price=document.getElementById(“p1”).textContent;
var nbrprice=parseInt(价格);
var nbrotal=parseInt(总计);
console.log(“nbrprice的值为”+nbrprice)
log(“nbrprice是一个”+类型(nbrprice));
log(“NBRTOAL是一个”+类型(NBRTOAL));
var总和=数量(价格)+数量(总额);
log(“sum是一个”+类型(sum));
console.log(“总和的值为”+sum);;
var sumtxt=(总和+价格);
log(“sumtxt是一个”+类型(sumtxt));
log(“sumtxt的值为”+sumtxt);;
log(“sumtxt是一个”+类型((sumtxt.toString()));
log(“sumtxt的值为”+(sumtxt.toString());;
document.getElementById(“Total”).innerHTML=sumtxt;
console.log(sumtxt);
}
},假);
})();代码>
塔可一号价格:4
塔可二号价格:5元
总额:0美元
您的var总计
在if内。。这意味着它不会存在于if范围之外。您可以将变量移动到if之前。。。或者在innerHTML之前重新创建它。复制您的问题的简单示例:“foo”.innerHTML=“bar”
不会神奇地更新任何DOM元素的内容。@wendelbsilva:那是不正确的。JavaScript具有函数作用域,而不是块作用域。另外,如果这真的是问题所在,那么代码会抛出一个刚刚在chrome控制台上测试过的ReferenceError
@FelixKling,如果变量没有进入if,它就不存在if(false){var j=10;}console.log(j)//不起作用
if(true){var j=10;}console.log(j)//工作
。如果innerHTML在If之外,我假设他会想设置它,即使他没有进入If。。。所以最好把变量移到外面。@wendelbsilva如果你说的“不起作用”是指“未定义的收益率”,那么它的工作原理与预期的完全一样。如果JS有块级作用域,它仍然会引用error。这会中断var nbrTotal=parseInt(Total)
,然后只需生成parseInt(Total.textContent),您仍然需要在回答中这样说。更好的是parseInt(Total.textContent,10)
Done。我还建议您看看jQuery。让事情变得更容易!或者Number(Total.textContent)
。感谢您指出我的错误,您的解决方案完全合理,完成了技巧并吸取了教训。如果它回答了您的问题,您应该接受它作为“最佳答案”。
var Total = document.getElementById("Total");