Почему Javascript оповещение вызывается много раз? - PullRequest
0 голосов
/ 15 февраля 2020

Мой пример - прототип спортивной фэнтезийной страницы, пользователи выбирают игроков из списка и, выбирая их, перемещают их в другой список. У каждого игрока есть цена, и у каждого пользователя есть предел зарплаты. Моя проблема в том, что я пытался реализовать это так, чтобы, если пользователь попытался выбрать игрока, на которого у него не было денег, ему сообщило бы предупреждение. Но моя проблема в том, что предупреждение появляется несколько раз, так что я нажимаю все в порядке, и оно возвращается. Количество раз, когда оно появляется, также кажется случайным, не имеет значения, как я нажимаю кнопку.

Сначала я подумал, что, возможно, я нажимал кнопку много раз, но это не так. При исследовании проблемы на этой странице все упоминали о добавлении дополнительных прослушивателей событий, но я не думаю, что это проблема с моим кодом. Я поместил код ниже и попытался удалить несвязанный код для удобства чтения. js проверяет, за каким столом находится игрок (выбранный пользователем или нет), проверяет, есть ли у него зарплата, и перемещает игрока (я удалил код, идущий в другую сторону, потому что он был неактуален). значение - это переменная, которая является текущим значением выбранной команды, а статистика - это словарь, где ключ - это имя игрока, связанное со списком, где первый индекс - это цена.

Мое лучшее предположение, что, возможно, кнопка застревает в нижнем положении, но это не имеет смысла?

JS:

function myFunction() {
        if ($(this).closest('tbody').attr('id')=='Right') {
            let name = $(this).closest("tr").find("td:first").text();
            if((value+stats[name][0]>11000)){
                alert('You do not have the salary for that')
            }else{
                $(this).closest("tr").remove();
                $('#lefttable').append('<tr><td>'+name+'</td><td><button onclick="myFunction()" class="btn btn-danger">-</button></td></tr>');
                selected_team.push(name)
                value+=stats[name][0]
                $("#teamPrice").text(value);
            }
        }
    };

HTML:

<tbody id="Right">
   {%for player in players%}
     {%if player not in team%}
       <tr>
         <td>{{player}}</td>
         <td>
           <button class="btn btn-danger" onclick="myFunction()">-</button>
         </td>
       </tr>
     {%endif%}
   {%endfor%}                   
 </tbody>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...