JS函数返回undefined排查:点击卡片累加功能失效原因
点击卡片后setcard函数显示undefined的修复方案
问题原因
你的代码里setcard函数定义时要求接收card2和card3两个参数,但在clickplus2和clickplus3中调用时只传了一个参数——点击卡片对应的变量,未传递的参数会被视为undefined。当undefined与数字相加时,结果会变成NaN,最终导致页面显示异常(表现为undefined或空白)。
修复方法(两种可选)
方法1:修改函数调用,传递完整参数
既然setcard需要两个参数,每次调用时都把当前的card2和card3值一起传进去,不管点击的是哪张卡片:
var card2 = 0; var card3 = 0; function setcard(card2, card3) { document.getElementById("truecount").innerHTML = card2 + card3; } function clickplus2() { resultado += 2; zen += 2; cartas += 1; valor += 2; zenok += 11; card2 += 1; setresultado(resultado, zen, cartas, valor, zenok); setcard(card2, card3); // 传递两个参数 } function clickplus3() { resultado += 3; zen += 2; cartas += 1; valor += 3; zenok += 10; card3 += 1; setresultado(resultado, zen, cartas, valor, zenok); setcard(card2, card3); // 传递两个参数 }
方法2:修改setcard函数,直接使用全局变量
card2和card3是全局变量,setcard可以直接读取它们的值,无需通过参数传递,调用时不用传参更简洁:
var card2 = 0; var card3 = 0; // 去掉函数参数,直接读取全局变量计算 function setcard() { document.getElementById("truecount").innerHTML = card2 + card3; } function clickplus2() { resultado += 2; zen += 2; cartas += 1; valor += 2; zenok += 11; card2 += 1; setresultado(resultado, zen, cartas, valor, zenok); setcard(); // 无需传参 } function clickplus3() { resultado += 3; zen += 2; cartas += 1; valor += 3; zenok += 10; card3 += 1; setresultado(resultado, zen, cartas, valor, zenok); setcard(); // 无需传参 }
内容的提问来源于stack exchange,提问作者Otávio Barreto
相关产品推荐
相关产品推荐

