簡體   English   中英

變量未在檢查值上重新分配

[英]Variable not reassigning on checked value

選擇復選框時變量garageVal 的值未更新。

Since the default position of the checkbox is checked on the first selection, garageVal is 15000, but it does not change when a different value is selected.

本節的目的是計算房屋的估價。 GarageVal 與其他變量一起插入計算器以生成最終值。

HTML:

  <div class="garage-block">
      <input type="checkbox" class='g1' name='garage'/>1</label>
      <input type="checkbox" class='g2' name='garage'/>2</label>
      <input type="checkbox" class='g3' name='garage'/>3</label>
  </div>

JS:

    let g1 = document.querySelector('.g1');
    let g2 = document.querySelector('.g2');
    let g3 = document.querySelector('.g3');
    let garageVal;
    if(g1.checked = true){
       garageVal = 15000;
    }else if(g2.checked = true){
       garageVal = 30000;
    } else if(g3.checked = true){
       garageVal = 45000;
    }
    console.log(garageVal);

默認情況下,控制台將顯示 15000,盡管我努力了,但我仍然無法更新garageVal。

if (g1.checked = true)

您的條件都是賦值,始終為true ,尤其是在第一次檢查時(賦值是評估為所分配值的表達式)。

 const obj = {} const foo = (obj.rar = 'yasss,') // "=" is assignment. not comparison console.log('obj:rar,'. obj,rar) // 'yasss.': but you probably didn't expect this console,log('foo,', foo) // also 'yasss!', but you probably expected boolean

=更改為===以進行比較:

if(g1.checked === true){
   garageVal = 15000;
}else if(g2.checked === true){
   garageVal = 30000;
} else if(g3.checked === true){
   garageVal = 45000;
}

或者只是省略比較,因為element.checked已經是 boolean 值。

if(g1.checked){
   garageVal = 15000;
}else if(g2.checked){
   garageVal = 30000;
} else if(g3.checked){
   garageVal = 45000;
}

加載腳本后,您的 if 和 elseif 語句會立即運行。 因此,在頁面加載時,腳本會運行,評估哪些框被選中,然后根據您的 HTML 分配一個值。 您需要將事件監聽器添加到每個復選框以使其實時更新。 例如:

g2.addEventListener("click", function(){
    // if statement to see if box is already checked or not
    if (g2.checked === false){
        g2.checked = true;
        garageVal = 30000;
    } else {
        g2.checked = false;
        // remove 3000 from garageVal, or whatever you need done when box is unchecked
    }
}, false);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM