Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/479.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript innerHTML不更新_Javascript_Events_Innerhtml - Fatal编程技术网

Javascript 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

我试图更新元素的innerHTML,但没有得到任何输出

每次点击玉米卷的图片时,玉米卷的价格都应该加到总数中。值是数字,而不是字符串

任何帮助都是感激的,我被难倒了

(函数(){
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");