Запустите javascript со значением поля onload

#javascript

#javascript

Вопрос:

Пытаюсь запустить скрипт при загрузке страницы со значением ввода при загрузке страницы. Скрипт работает нормально onchange, но я также хочу запускаться при загрузке страницы. Я попробовал onload=»calculateAmount(this.value);»>

 <input type="number" name="tot_pin_requested" id="tot_pin_requested" class="inputbox autowidth" value="{{ PPDEFAULT_VALUE }}"   onchange="calculateAmount(this.value);">

 <script>
            function calculateAmount(val) {
                var price = val * 1;
                //display the result
                var tot_price = price   (price * 0.029   .30);
                tot_price.toFixed(2);
                var divobj = document.getElementById('amount');
                divobj.value = tot_price;
            }


        </script>
        
    
  

Ответ №1:

Не добавляйте его в элемент, просто отделите его:

 <script>calculateAmount(document.querySelector("#tot_pin_requested").value);</script>
  

Ответ №2:

Если вы хотите быть уверены, что документ готов, просто используйте DOMContentLoaded event .

Также я предлагаю вам использовать parseFloat on inputValue, чтобы оно правильно менялось с типа string на тип number . (или parseInt(value, radix), если у вас будут только значения int)

Также я не знаю, в чем заключается логика var price = val * 1 ….

Смотрите ниже

 window.addEventListener('DOMContentLoaded', (event) => {
  const inputValue = document.getElementById('tot_pin_requested').value

  calculateAmount(parseFloat(inputValue))
})



function calculateAmount(val) {
  var price = val * 1;
  //display the result
  var tot_price = price   (price * 0.029   .30);
  tot_price.toFixed(2);
  var divobj = document.getElementById('amount');

  divobj.value = tot_price;
}  
 <input type="number" name="tot_pin_requested" id="tot_pin_requested" class="inputbox autowidth" value="10" onchange="calculateAmount(this.value);">
<input type="number" id="amount">