函数执行异常求助:仅最后一个advance函数生效,其余被忽略
问题原因与修复方案
你的问题核心出在text()方法的特性上:
$('.achieve').text(...)会清空目标元素的所有现有内容,再设置新文本。- 每次调用
advance时,第一行的text()都会把之前所有调用添加的内容清空,所以只有最后一次调用的内容会保留(还因为两次append()重复了三次)。
修复代码
直接移除text()行,改用append()追加内容,还可以给每条成就加标签让排版更清晰:
function advance(rQ, desc, ec){ $('.achieve').append(`<p>${desc}. Points: ${ec}</p>`); } // 后续调用保持不变 advance(5, "Getting Started. Get 5 points", 1); advance(10, "No Longer a Rookie. Get 10 points", 1); advance(15, "More Than a Beginner. Get 15 points", 1); advance(20, "Getting The Hang of It! Get 20 points", 1); advance(30, "Beating the Average. Get 30 points", 2); advance(45, "More Than a Master. Get 45 points", 2); advance(50, "OG. Get 50 points", 1); advance(60, "Hacker. Get 60 points", 2); advance(90, "King of Twurkeys. Get 90 points", 3); advance(100, "Pro Hacker. Get 100 points", 2);
如果不需要额外标签,也可以直接追加文本(记得加分隔符避免内容挤在一起):
function advance(rQ, desc, ec){ $('.achieve').append(`${desc}. Points: ${ec}<br>`); }
补充说明
text():替换元素内的全部内容为指定文本append():在元素现有内容的末尾添加新内容
修改后所有advance调用的内容都会依次显示,不会被覆盖。
内容的提问来源于stack exchange,提问作者AlexThyCoolest
相关产品推荐
相关产品推荐

