Javascript JS:我有一个函数可以激活两次而不是一次?

Javascript JS:我有一个函数可以激活两次而不是一次?,javascript,Javascript,我有一个视频游戏,玩家可以选择多达3种技能,当他选择升级他们。因此,想象一下,是时候升级你的一项技能了,一个径向选择器弹出,让你可以选择3项不同的技能 如果用户在任何技能上单击1次,我下面的功能都会起作用。然而在测试阶段,我点击了“升级我”按钮来激活它,然后我选择了“攻击”和“防御”(或多种技能)。然后我点击了径向选择器上的第一个技能。而不是1技能得到升级,它升级了两个技能 Strike被Deepcut取代 防御被石墙取代 只能升级一种技能,不能同时升级两种技能 当我查看下面的功能时,我无法理

我有一个视频游戏,玩家可以选择多达3种技能,当他选择升级他们。因此,想象一下,是时候升级你的一项技能了,一个径向选择器弹出,让你可以选择3项不同的技能

如果用户在任何技能上单击1次,我下面的功能都会起作用。然而在测试阶段,我点击了“升级我”按钮来激活它,然后我选择了“攻击”和“防御”(或多种技能)。然后我点击了径向选择器上的第一个技能。而不是1技能得到升级,它升级了两个技能

Strike被Deepcut取代

防御被石墙取代

只能升级一种技能,不能同时升级两种技能

当我查看下面的功能时,我无法理解为什么在多次单击后两个按钮同时更新。我假设它是将列表添加到一起,但当我执行console.log(list)时,它只引用了我在switch语句中编写的技能

function radialSelector(object){
    var list;
     switch (object){
        case strike:
        list = [deepcut, balancedstrike, fury];
        break;
        case defend:
        list = [stonewall, digin, holdtheline];
        break;
        default:
        console.log("radialSelector() has set its switch statement to default")
    }

    console.log(object);
    console.log(list);
    for (var i=0, l=list.length; i<l; i++) {
    radialSubMenuSkills("position"+(i+1), list[i]);
    }


    $('#upgradeSkillsBar').on('click', '#position1', function(){
        removeSkillButton(object);
        addSkillButton(list[0]);
        removeRadialSubMenu();
    });
}

这两种技能都得到升级的原因是,每当您单击选择一项技能时,您都会将一个单击处理程序附加到
#upgradeSkillsBar
。这些操作会累积,即,处理程序的分配不会替换以前分配的处理程序,而是会将一个新的处理程序添加到要在单击事件上执行的处理程序列表中

要避免这种累积,请在()上的
.on()之前调用,如下所示:

$('#upgradeSkillsBar').off('click').on('click', '#position1', function(){
    //... etc

你能精心制作一把小提琴吗?ThxI会的,但代码片段功能似乎缺失了?就在2分钟前,我发现我的点击次数增加了。例句:如果我点击了10次Strike,深切割会增加10次。然后我回到这里,你把这个贴出来。非常感谢,这解释了一切!我只是希望它没有被设置为默认为累计。那将节省我3个小时。
$('#upgradeSkillsBar').off('click').on('click', '#position1', function(){
    //... etc