我有這段代碼可以根據下拉串列選擇更改名為“因子”的變數的值:
sel.addEventListener("change", function (evt) {
var days = parseInt(evt.target.options[evt.target.selectedIndex].value);
var factor = 0;
switch (days) {
case 3: case 4: var factor = 1.5; break;
case 5: case 6: var factor = 1.4; break;
case 7: case 8: case 9: var factor = 1.3; break;
case 10: case 11: case 12: case 13: case 14: var factor = 1.2; break;
case 15: default: var factor = 1.0;
}
然后,我有這個函式,它應該在基于另一個(不同)下拉串列選擇的計算中使用名為“因子”的變數:
psel.addEventListener("change", function (evt) {});
function calculate (pfactor){
var nopages = document.getElementById("pages");
var priceOutput = document.getElementById("nopagesOutput");
var pfactor = document.getElementById("factorOutput");
priceOutput.innerHTML = nopages.value;
var total = nopages.value * 10 * factor;
document.getElementById("savings").innerHTML = `$ ${total}`;
結果我不斷得到NaN。如何在計算()中使用名為“因子”的變數中的值;功能?
uj5u.com熱心網友回復:
因子變數在 sel 更改事件中宣告為本地變數,因此在 psel 事件中不可見。您需要在事件方法之外宣告因子變數,或者保存到sel中的隱藏輸入型別,并從psel中的隱藏輸入中獲取。另外,您只需要一個 var 宣告,在 switch 中您不需要 var 關鍵字,因為已經宣告了因子 (var factor = 0)
在 html 中
<input type="hidden id ="factor"/>
在 sel 的底部
document.getElementById("factor").value = factor;
在psel
var factor = document.getElementById("factor").value
或者只是宣告
var factor = 0
事件之外(取決于您的代碼的結構)
uj5u.com熱心網友回復:
您可以將factor變數移動到將在函式之間共享的外部范圍
var factor = 0; //move `factor` from the function scope to the global scope
sel.addEventListener("change", function (evt) {
var days = parseInt(evt.target.options[evt.target.selectedIndex].value);
//var factor = 0; //remove this
switch (days) {
case 3: case 4: var factor = 1.5; break;
case 5: case 6: var factor = 1.4; break;
case 7: case 8: case 9: var factor = 1.3; break;
case 10: case 11: case 12: case 13: case 14: var factor = 1.2; break;
case 15: default: var factor = 1.0;
}
現在factor是可見的calculate,但你的計算還有一個問題是nopages.value。該值可能是一個無法進行數字運算的字串,因此您需要將其轉換為數字Number(nopages.value)
function calculate (pfactor){
var nopages = document.getElementById("pages");
var priceOutput = document.getElementById("nopagesOutput");
var pfactor = document.getElementById("factorOutput");
priceOutput.innerHTML = nopages.value;
var total = Number(nopages.value) * 10 * factor;
document.getElementById("savings").innerHTML = `$ ${total}`;
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/493774.html
標籤:javascript
上一篇:如何將陣列物件變成物件?
下一篇:如何使用正則運算式驗證URL
