加20有效,但减20无效-我如何修复电子商务网站的Javascript代码?

hfsqlsce  于 2023-05-21  发布在  Java
关注(0)|答案(5)|浏览(135)

我想建立一个电子商务网站。当你点击/选中一个varietion时,它会在总价100的基础上增加20。但是当你取消检查varietion它不减去总价格。请帮帮我--我已经试了好几个月了,就是不行。
下面是我的代码:

<div id="total">500</div>
    
    <input onclick="addTwenty()" id="checkbox1" type="checkbox">R20</input>

    <script>

        let total = document.getElementById("total");
        let twenty = document.getElementById("checkbox1");

        function addTwenty(){
            total = 500;
            twenty = 20;
            if (twenty.checked = true){
                document.getElementById("total").innerHTML = total + twenty;
            } else{
                document.getElementById("total").innerHTML = total - twenty;
            }
        }
        
    </script>

我使用了If语句。当为true时,它在500上添加值20,即520。但如果不加控制它就不会减20。我想让它减去它现在未选中时所添加的值。

rjzwgtxy

rjzwgtxy1#

解决方案:

原因和解释如下。

勾选时加20,不勾选时返回500

const twenty_check_box = document.getElementById("checkbox1");

    function addTwenty() {
        total = 500;
        twenty = 20;
        if (twenty_check_box.checked == true) {
            total += twenty;
            document.getElementById("total").innerHTML = total;
        } else {
           total -= twenty;
            document.getElementById("total").innerHTML = total;
        }
    }

原因

line 8上,将20设置为复选框-> let twenty = document.getElementById("checkbox1");
但是在line 12上,你设置了twenty = 20;,所以现在变量twenty不包含元素,而是整数20。
同样,在line 13上,在condition中,您使用了(twenty.checked = true)...但是为了让您更清楚,=用于赋值,==用于检查/比较值,因此您需要在这里使用==作为(twenty.checked == true)

方案说明

因此,我们将复选框设置为twenty_check_box而不是twenty,并将其设置为常量。其次,我们检查为(twenty_check_box.checked == true)。并将total变量更新为total += twenty,表示total = total + twenty并显示它,因此现在total为520
然后如果未选中,它从total中减去20,所以现在total再次是500
希望能解决问题…

eimct9ow

eimct9ow2#

你应该给innerHTML赋值而不是变量。

<div id="total">500</div>

<input onclick="addTwenty()" id="checkbox1" type="checkbox">R20</input>

<script>
  let totalElement = document.getElementById("total");
  let twentyElement = document.getElementById("checkbox1");

  // ...

  function addTwenty() {
    let total = parseInt(totalElement.innerHTML);
    let twenty = 20;

    if (twentyElement.checked === true) {
      totalElement.innerHTML = total + twenty;
    } else {
      totalElement.innerHTML = total - twenty;
    }
  }
</script>
piok6c0g

piok6c0g3#

=是赋值运算符,而不是相等性检查运算符。您应该使用===而不是=,或者更好,因为这是一个布尔值,只需完全省略它:

if (twenty.checked) {
    document.getElementById("total").innerHTML = total + twenty;
} else{
    document.getElementById("total").innerHTML = total - twenty;
}
2ul0zpep

2ul0zpep4#

将addTwenty函数中的20个变量名改为amount,这样就可以工作了。把你的相等比较从=改为===。

let twenty = document.getElementById("checkbox1");

    function addTwenty(){
        total = 500;
        amount = 20;
        if (twenty.checked === true){
            document.getElementById("total").innerHTML = total + amount;
        } else{
            document.getElementById("total").innerHTML = total - amount;
        }
    }
    
   twenty.addEventListener("click", function(){
   addTwenty();
   });
d8tt03nd

d8tt03nd5#

您需要使用=====运算符进行条件比较。您还可以在函数中重新分配twenty

<div id="total">500</div>
<input onclick="addTwenty()" id="checkbox1" type="checkbox">R20</input>
<script>
    let total = document.getElementById("total");
    let twenty = document.getElementById("checkbox1");

    function addTwenty(){
        total = 500
        amt = 20
        if (twenty.checked){
            document.getElementById("total").innerHTML = total + amt;
        } else{
            document.getElementById("total").innerHTML = total - amt;
        }
    }
</script>

但是你也可以只使用twenty.checked,因为它本身要么为真,要么为假。

相关问题