如何在javaScript中正确实现全局变量?

如何在javaScript中正确实现全局变量?,javascript,Javascript,我很难将totalPrice的值显示到我的控制台中。我只是在控制台中得到0,但我想得到每个单选按钮的实际值。有人能帮我吗 html 将日志记录移动到事件侦听器中 var totalPrice=0; var radio=document.getElementsByName(“支付”); radio.forEach(检查=>{ check.addEventListener('click',函数(e){ 总价=目标价值; 控制台日志(总价); }); }); 您必须console.log(totalP

我很难将totalPrice的值显示到我的控制台中。我只是在控制台中得到0,但我想得到每个单选按钮的实际值。有人能帮我吗

html


将日志记录移动到事件侦听器中

var totalPrice=0;
var radio=document.getElementsByName(“支付”);
radio.forEach(检查=>{
check.addEventListener('click',函数(e){
总价=目标价值;
控制台日志(总价);
});
});

您必须
console.log(totalPrice)
就在
totalPrice=e.taget.value下面

您可以像这样将全局变量置于非生命状态。您可以防止全局变量出现意外名称冲突等问题。但是,要使用全局变量,只需在每个函数外部用var关键字声明即可

(函数(){
让totalPrice=0;
var radio=document.queryselectoral(“.myPay”);
radio.forEach(检查=>{
check.addEventListener('click',函数(e){
总价=目标价值;
});
});
document.getElementById(“price”).addEventListener(“单击”,“事件)=>{
document.getElementById(“显示”).value=总价;
});
})();
Radio1
无线电2
总价

这是否回答了您的问题?是的,我想从我的forEach循环中访问,我将它分配给每个单选按钮的值。请帮助我。感谢您提供的代码的问题在于
consoling
页面加载时的变量,它不会得到总值。即使您在代码末尾抛出控制台,它仍然在事件侦听器中的代码之前运行。您的问题与作用域或全局变量无关。这只是因为在用户有机会与单选按钮交互并因此更改其值之前,您的代码记录了
totalPrice
。只需将最后一行移到事件处理程序内。@user3718511您可以在函数外访问它。但您需要在事件发生后访问它。代码应该如何预测未来会发生什么事件?谢谢你的回答。但我想访问totalPrice outisde函数。因为我正在处理一个项目,而我只是陷入了这个意外问题。谢谢你的回答。但我想访问totalPrice outisde函数。因为我正在处理一个项目,而我只是陷入了困境此意外问题。您仍然可以在函数外部访问它。关于代码编写方式的问题,您只能在第一次加载页面时记录totalPrice。当您在事件侦听器中移动日志记录时,每次触发一次单击时,它都会记录日志。您能告诉我除了编辑您的答案之外的其他方法吗?非常感谢。。。
<lable>Radio1</lable>
    <input type="radio" id="radio1" name="pay" class="myPay"  value="2"/>
    <label>Radio2</label>
    <input type="radio" id="radio2" name="pay" class="myPay"  value="3" />
var totalPrice = 0;
var radio = document.querySelectorAll(".myPay");
radio.forEach(check => {
  check.addEventListener('click', function(e) {
    totalPrice = e.target.value;
  });
});
console.log(totalPrice);