Пытаюсь добавить значение к строке, и оно продолжает добавлять 1 каждый раз

#javascript #html #css

#javascript #HTML #css

Вопрос:

Я создаю систему онлайн-бронирования билетов для своей курсовой работы в университете, и я хочу иметь возможность отображать, когда пользователь добавил билет в корзину по щелчку, что добавляло бы стоимость билета к промежуточному итогу по каждому клику, ограниченному 3 билетами, с помощью инструкции if. Я могу заставить его работать, когда использую golfTotal, но по какой-то причине, когда я пытаюсь добавить его в промежуточный итог, он не регистрируется при первом нажатии, но он работает при втором, третьем и четвертом щелчках.

Я попытался настроить его так, чтобы при нажатии кнопки не выполнялся оператор if, а просто изменялось общее значение и добавлялось к нему при каждом нажатии. Не уверен, что еще я мог бы попробовать.

 <div class="golf">
    <p id="golfTotalTickets">0</p>
    <p id="golfTotal"></p>
    <p><button onclick="golfAdd();" id="golfAdd">Add to Cart</button></p>
</div>                          

<div class="subtotal">
<div class="subtotal_text">
<h3 id="subtotal">Subtotal: £ <h3 id="total"> 
0.00</h3></h3><br>
</div>
  
 var total = 0;
var golfTotal = 0;
var golfTotalTickets = 0;

function golfAdd() {

    golfTotalTickets  = 1;
    document.getElementById("total").innerHTML = total.toFixed(2);

    if (golfTotalTickets <= 1) {
    golfTotal = 15;
    total  = 15;
    document.getElementById("golfTotalTickets").innerHTML = golfTotalTickets   " Ticket";
    document.getElementById("golfTotal").innerHTML = golfTotal.toFixed(2);
    } else if (golfTotalTickets == 2){
    golfTotal  = 15
    total  = 15
    document.getElementById("golfTotalTickets").innerHTML = golfTotalTickets   " Tickets";
    document.getElementById("golfTotal").innerHTML = golfTotal.toFixed(2);
    } else if (golfTotalTickets == 3){
    golfTotal  = 15
    total  = 15
    document.getElementById("golfTotalTickets").innerHTML = golfTotalTickets   " Tickets";
    document.getElementById("golfTotal").innerHTML = golfTotal.toFixed(2);
    }else{
            window.alert("You are not allowed to buy more than 3 tickets for The Open.");
    }
}
  

При нажатии кнопки значение промежуточного итога должно увеличиваться на 15 при каждом нажатии, за исключением того, что, когда golfTotalTickets достигает 3, оно должно превышать 45.

Ответ №1:

Вы можете переместить следующее document.getElementById("total").innerHTML = total.toFixed(2); в после вычисления. Причина в том, что ваш расчет еще не был выполнен до вашего if-else .

Смотрите фрагмент:

 var total = 0;
var golfTotal = 0;
var golfTotalTickets = 0;

function golfAdd() {

    golfTotalTickets  = 1;
    //document.getElementById("total").innerHTML = total.toFixed(2); //move from there to after if else

    if (golfTotalTickets <= 1) {
    golfTotal = 15;
    total  = 15;
    document.getElementById("golfTotalTickets").innerHTML = golfTotalTickets   " Ticket";
    document.getElementById("golfTotal").innerHTML = golfTotal.toFixed(2);
    } else if (golfTotalTickets == 2){
    golfTotal  = 15
    total  = 15
    document.getElementById("golfTotalTickets").innerHTML = golfTotalTickets   " Tickets";
    document.getElementById("golfTotal").innerHTML = golfTotal.toFixed(2);
    } else if (golfTotalTickets == 3){
    golfTotal  = 15
    total  = 15
    document.getElementById("golfTotalTickets").innerHTML = golfTotalTickets   " Tickets";
    document.getElementById("golfTotal").innerHTML = golfTotal.toFixed(2);
    }else{
            window.alert("You are not allowed to buy more than 3 tickets for The Open.");
    }
    document.getElementById("total").innerHTML = total.toFixed(2); //here
}  
 <div class="golf">
    <p id="golfTotalTickets">0</p>
    <p id="golfTotal"></p>
    <p><button onclick="golfAdd();" id="golfAdd">Add to Cart</button></p>
</div>                          

<div class="subtotal">
<div class="subtotal_text">
<h3 id="subtotal">Subtotal: £ <h3 id="total"> 
0.00</h3></h3><br>
</div>  

Комментарии:

1. Вероятно, самый быстрый ответ, который я когда-либо получал, вы только что сохранили мою курсовую работу! большое спасибо, чувак.