> = И <= не работают с двойным цифровым? Javascript - PullRequest
0 голосов
/ 04 августа 2020

Что происходит, так это то, что я замечаю, что использую оператор if, и проверяю, достаточно ли у меня очков, чтобы получить что-то с помощью> =, но сталкиваюсь с проблемой, что это нормально с трехзначным числом, таким как 100 или 200, но как Как только я пытаюсь сделать 50, он не может проверить это, в результате чего вы не сможете купить его, даже если у вас есть много очков. Я заметил, что это сработало, когда я увеличил максимальную точку до 500 или выше, но я не хочу этого делать. Еще одно решение, которое я недавно нашел, чтобы сделать это так, как этот 050, но это неудобный способ сказать 50, вы, ребята, знаете, почему проверка с двойными цифрами не справляется или как правильно это сделать?

Конфликт / ошибка возникает в Sword прямо перед последним «Тестом», также можно найти его только с комментарием, который является длинным задницей.


function equipment() {

    clear();

    console.log(point);

    $('<p class=\'texts\'> Here is your equipment screen, please select what you want and if make a mistake or dislike your choice, please click on reset button, otherwise here is your ' + point + ' points to spent on here.</p>').insertBefore('#placeholder');

    $('<button class=\'command_button e-buttons\' value=\'pistol\'>Pistol</button>').insertBefore('#placeholder_choice');

    $('<button class=\'command_button e-buttons\' value=\'rifle\'>Rifle</button>').insertBefore('#placeholder_choice');

    $('<button class=\'command_button e-buttons\' value=\'sword\'>Sword</button>').insertBefore('#placeholder_choice');

    $('<button class=\'command_button e-buttons\' value=\'test\'>Test</button>').insertBefore('#placeholder_choice');

};

$(document).on('click', '.e-buttons', function() {

    var button = $(this).val();
    console.log('The Button is ' + button);
    $('#console').scrollTop($('#console')[0].scrollHeight);
    
    if (point <= 0) {

        alert("Sorry, you have no more point left, please either continue to next step or remove other choices.");

        equipment();

    }

    if (button == 'pistol') {

        if (point >= '100') {

            console.log("Your equipment menu is working. " + button);
            point = point - '100';
            console.log("the point remaining is " + point + ".");
            equipment();

        }

        else {

            alert("Sorry not enough money for pistol.");
            equipment();

        }

    }

    else if (button == 'rifle') {

        if (point >= '200') {

            console.log("Your equipment menu is working. " + button)
            point = point - '200';
            console.log("the point remaining is " + point + ".")
            equipment();

        }

        else {

            alert("Sorry not enough money for rifle.");
            equipment();

        }

    }

    else if (button == 'sword') {

        if (point >= '50') {

            console.log("Your equipment menu is working. " + button)
            point = point - '50';
            console.log("the point remaining is " + point + ".")
            equipment();

        }

        else { // Fix this, something is causing it to be error when it at 50, but if it 100 or more, it work fine. Also notice that if you reduced total to below 400, it will cause same error but are fine if over 400... So something is clearly prevent point check of sword from see the point. Maybe if change to switch statement will correct this?

            alert("Sorry not enough money for sword.");
            equipment();

        }

    }

    else if (button == 'test') {

        if (point >= '500') {

            console.log("Your equipment menu is working. " + button)
            point = point - '500';
            console.log("the point remaining is " + point + ".")
            equipment();

        }

        else {

            alert("Sorry not enough money for test.");
            equipment();

        }

    }

    else {

        console.log("Your equipment menu is not working. " + button)
        alert("Your equipment menu is not working. " + button)

    };

});```

Ответы [ 2 ]

0 голосов
/ 04 августа 2020

Проблема в том, что вы сравниваете строки. Например, когда вы сравниваете '200' с '50', он фактически сравнивает символ за символом слева направо. Итак, у нас есть первые 2 символа из 2 строк: '2' < '5', что приведет к '200' >= '50' возвращению false.

Чтобы решить эту проблему, просто преобразуйте их в числа перед их сравнением. parseInt() или Number() подойдут.

0 голосов
/ 04 августа 2020

В вашем коде вы везде используете точки как строковое значение, но при этом выполняете операции с ним, например '-'.

if (point >= '500') {

или

point = point - '500';

Это предназначена? Возможно, поможет изменить количество очков на целое число.

point = point - 500;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...