![](/img/trans.png)
[英]Canvas images do not load until click event… I want to load when page loads, how?
[英]How do i get the values to load when the page loads? Instead of NaN?
我一直在為客戶制作汽車租賃計算器。 它幾乎完成並且一切正常,包括計算和條件但我似乎無法讓我的計算器計算頁面加載的價格,只有在我按下其中一個單選按鈕后它才顯示價格而不是 NaN。
這是一種簡單的形式,使用 PHP 短代碼從服務器檢索數據,然后在計算中使用它們。
這是一個鏈接
這是我的代碼,這是我第一次真正從頭開始構建這樣的東西,所以任何提示和最佳實踐將不勝感激。
這是我用於 function 的 HTML 和 JavaScript。
我也在用 Jquery
謝謝
<body>
<div id="calculator">
<div class="resultat">
<label for="LeaseValue_html" >Pris pr. mdr. inkl. moms </label>
<input type="text" id="LeaseValue_html" value="2500" readonly="true">
</div>
<div class='py'>
<label for="lp" class="LeasingPeriodeCSS">Vælg leasingperiode</label>
</br>
<label id="label12">
<input id="leasingRadio" type="radio" value="12" class="option-input radio" name="example" checked />
12 mdr
</label>
<label id="label24">
<input id="leasingRadio" type="radio" value="24" class="option-input radio" name="example" />
24 mdr
</label>
<label id="label36">
<input id="leasingRadio" type="radio" value="36" class="option-input radio" name="example" />
36 mdr
</label>
</div>
</br>
<div class="range-control">
<input id="inputRange" type="range" min="15000" max="35000" step="5000" value="15000" data-thumbwidth="20">
<label> Km pr. år.:</label><p id="kmSliderValue" class="SliderResultat"> </p>
</div>
<div class="range-control">
<input id="inputRange1" type="range" min="10" max="60" step="5" value="10" data-thumbwidth="20">
</p><label> Ubetaling:</label><p id="downPaymentValue"class="SliderResultat">
</div>
<script>
$(document).ready(function() {
let total = 0;
let downPayment = 0;
// Hente de 3 total værdier forbundet med bilen
const total12 = document.getElementById( 'custom-field-1' );
// console.log( total12.innerHTML );
const total24 = document.getElementById( 'custom-field-2' );
// console.log( total24.innerHTML );
const total36 = document.getElementById( 'custom-field-3' );
// console.log( total36.innerHTML );
const leasingRadio = document.querySelectorAll("input[type=radio]");
let leaseVal;
const label12 = document.getElementById("label12");
const label24 = document.getElementById("label24");
const label36 = document.getElementById("label36");
for (let i = 0; i < leasingRadio.length; i++) {
if (parseFloat(total12.innerHTML) > 0) {
label12.style.display = "";
} else {
label12.style.display = "none";
}
if (parseFloat(total24.innerHTML) > 0) {
label24.style.display = "";
} else {
label24.style.display = "none";
}
if (parseFloat(total36.innerHTML) > 0) {
label36.style.display = "";
} else {
label36.style.display = "none";
}
}
for (let i = 0; i < leasingRadio.length; i++) {
leasingRadio[i].addEventListener('change', function() {
let value = this.value;
if (value === "12") {
leaseVal = parseFloat(total12.innerHTML);
} else if (value === "24") {
leaseVal = parseFloat(total24.innerHTML);
} else if (value === "36") {
leaseVal = parseFloat(total36.innerHTML);
}
// console.log(leaseVal);
});
}
// radio værdien til længden af leasingen
var leaseLenght = leasingRadio[0].value;
for (let i = 0; i < leasingRadio.length; i++) {
leasingRadio[i].addEventListener('change' , function() {
leaseLenght = this.value;
// console.log(leaseLenght);
});
}
// Get the input and output elements
var inputRange1El = $('#inputRange1');
var inputRangeEl = $('#inputRange');
var LeaseValue_html = document.getElementById("LeaseValue_html");
const downPaymentValue = document.getElementById("downPaymentValue");
const KmValue = document.getElementById("kmSliderValue");
// Calculate the total value based on the input ranges and the selected radio button
function calculateTotal() {
var inputRange1Value = inputRange1El.val();
var inputRangeValue = inputRangeEl.val();
var downPayment = (inputRange1Value/100) * leaseVal;
var kmSlider = parseFloat(inputRangeValue);
//Calculate the total value by adding the values of the input ranges and the radio button
var total = (leaseVal - downPayment)/leaseLenght + (kmSlider - 15000) / leaseLenght;
total = (Math.round(total * 100) / 100).toFixed(0);
downPayment = (Math.round(downPayment * 100) / 100).toFixed(0);
// Update the lease value field with the calculated total
LeaseValue_html.value = total;
downPaymentValue.innerHTML = downPayment.toLocaleString() + "kr";
KmValue.innerHTML = kmSlider.toLocaleString() + "km";
}
inputRangeEl.on('input', calculateTotal);
inputRange1El.on('input', calculateTotal);
$('input[type=radio]').on('change', calculateTotal);
$('input[type=radio]').on('input', calculateTotal);
$('input[type=range]').on('load', calculateTotal);
// Calculate the total value when the page loads
window.onload = function() {
calculateTotal(); // call the function on page load
var leasingRadio = document.querySelectorAll('input[type=radio]');
for (let i = 0; i < leasingRadio.length; i++) {
leasingRadio[i].addEventListener('change', calculateTotal); // call the function when the radio button value is changed
}
}
calculateTotal();
});
</script>
為什么它不對頁面加載進行計算? 我究竟做錯了什么?
感謝您抽出時間來查看我的問題
你只需要初始化你的leaseVal
:
$(document).ready(() => { let total = 0; let downPayment = 0; // Hente de 3 total værdier forbundet med bilen const total12 = document.getElementById( 'leasing12' ); const total24 = document.getElementById( 'leasing24' ); const total36 = document.getElementById( 'leasing36' ); const leasingRadio = document.querySelectorAll("input[type=radio]"); let leaseVal = 12; const label12 = document.getElementById("label12"); const label24 = document.getElementById("label24"); const label36 = document.getElementById("label36"); for (let i = 0; i < leasingRadio.length; i++) { leasingRadio[i].addEventListener('change', function() { let value = this.value; leaseVal = parseFloat(value); }); } // radio værdien til længden af leasingen var leaseLenght = leasingRadio[0].value; for (let i = 0; i < leasingRadio.length; i++) { leasingRadio[i].addEventListener('change', function() { leaseLenght = this.value; // console.log(leaseLenght); }); } // Get the input and output elements var inputRange1El = $('#inputRange1'); var inputRangeEl = $('#inputRange'); var LeaseValue_html = document.getElementById("LeaseValue_html"); const downPaymentValue = document.getElementById("downPaymentValue"); const KmValue = document.getElementById("kmSliderValue"); // Calculate the total value based on the input ranges and the selected radio button function calculateTotal() { var inputRange1Value = inputRange1El.val(); var inputRangeValue = inputRangeEl.val(); var downPayment = (inputRange1Value/100) * leaseVal; var kmSlider = parseFloat(inputRangeValue); //Calculate the total value by adding the values of the input ranges and the radio button var total = (leaseVal - downPayment)/leaseLenght + (kmSlider - 15000) / leaseLenght; total = (Math.round(total * 100) / 100).toFixed(0); downPayment = (Math.round(downPayment * 100) / 100).toFixed(0); // Update the lease value field with the calculated total LeaseValue_html.value = total; downPaymentValue.innerHTML = downPayment.toLocaleString() + "kr"; KmValue.innerHTML = kmSlider.toLocaleString() + "km"; } inputRangeEl.on('input', calculateTotal); inputRange1El.on('input', calculateTotal); $('input[type=radio]').on('change', calculateTotal); $('input[type=radio]').on('input', calculateTotal); $('input[type=range]').on('load', calculateTotal); // Calculate the total value when the page loads window.onload = function() { calculateTotal(); // call the function on page load var leasingRadio = document.querySelectorAll('input[type=radio]'); for (let i = 0; i < leasingRadio.length; i++) { leasingRadio[i].addEventListener('change', calculateTotal); // call the function when the radio button value is changed } } calculateTotal(); }); </script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <body> <div id="calculator"> <div class="resultat"> <label for="LeaseValue_html" >Pris pr. mdr. inkl. moms </label> <input type="text" id="LeaseValue_html" value="2500" readonly="true"> </div> <div class='py'> <label for="lp" class="LeasingPeriodeCSS">Vælg leasingperiode</label> </br> <input id="leasing12" type="radio" value="12" class="option-input radio" name="leasingRadio" checked /> <label id="label12" for="leasing12">12 mdr</label> <input id="leasing24" type="radio" value="24" class="option-input radio" name="leasingRadio" /> <label id="label24" for="leasing24">24 mdr</label> <input id="leasing36" type="radio" value="36" class="option-input radio" name="leasingRadio" /> <label id="label36" for="leasing36">36 mdr</label> </div> </br> <div class="range-control"> <label> Km pr. år.:</label> <input id="inputRange" type="range" min="15000" max="35000" step="5000" value="15000" data-thumbwidth="20"> <p id="kmSliderValue" class="SliderResultat"></p> </div> <div class="range-control"> <label> Ubetaling:</label> <input id="inputRange1" type="range" min="10" max="60" step="5" value="10" data-thumbwidth="20"> <p id="downPaymentValue" class="SliderResultat"> </p> </div> </div> </body> <script src="https://code.jquery.com/jquery-3.6.3.min.js"></script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.