'\' используется для экранирования строки, когда я его удаляю, это означает, что total () не является функцией.

аюсь добавить функцию onclick, когда пользователь установил флажок, и тогда будет показана общая цена.
Вся информация, включая цену, извлекается из базы данных (нет проблем с получением данных, данные отображаются правильно).
Вот как выглядит код.

//calculate price
function total() {
  var cal = document.getElementsByName('event');
  var total = 0;
  for (var i = 0; i < cal.length; i++) {
    if (cal[i].checked) {
      total += parseFloat(cal[i].getAttribute("data-price"));
    }
  }
}
var checks = document.getElementsByName(event);
for (var i = 0; i < checks.length; i++) checks[i].onclick = total;
<form id="bookingForm" action="javascript:alert('form submitted');" method="get">
		<section id="selectEvent">
			<h2>Select Events</h2>
    <div class ="item">
    <span class="chosen">
   event1 <input type= checkbox name= event data-price = "1" value=eventId1/>
    event2 <input type= checkbox name= event data-price = "2" value=eventId2/>
   </span>
   </div>
		</section>

	

		<section id="checkCost">
			<h2>Total cost</h2>
			Total <input type="text" name="total"  size="10" readonly />
		</section>

	
	</form>

Вот код Java-сценария, просто сосредоточиться на общей функции ()

window.addEventListener('load', initialise);

    function initialise () {
        'use strict';
        //calculate price
        function total(){
        var cal= document.getElementsByName('event[]');
        var total = 0;
        for (var i = 0; i<cal.length; i++){
            if(cal[i].checked){
                total += parseFloat(cal[i].data-price);
            }
        }           
    document.getElementByName("total").value = "$" + total.toFixed(2);
    }

вот ссылка для моей справки

[1]:Показать общую стоимость, когда флажок установлен в JS
Я тоже пытался, но это не работает

total + = parseFloat (cal [i] .getAttribute ("data-price")

Ответы на вопрос(2)

Ваш ответ на вопрос