Javascript onchange 复选框取消

Javascript onchange checkbox cancel

这是我的第一个问题,真的希望能学到很多东西。我实际上不是我创业公司的技术人员,而是因为缺乏尝试自己做事的原因:-)

我为我的模块订购系统创建了一个 onchange 事件。当我单击复选框时,所选模块出现在摘要中。这行得通。但是当我取消选中该复选框时,我希望该模块从摘要中消失。那现在行不通了。我必须在 JS 中更改什么才能做到这一点?

复选框

<input type="checkbox" class="custom-control-input" 
  onchange="modulecontractsSelect(this, event)">

总结

<p id="module-contracts-summary"> </p>
<p id="module-contracts-summary-price"> </p>

Javascript

function modulecontractsSelect() {
    document.getElementById("module-contracts-summary").innerHTML = "Module contractbeheer"
    document.getElementById("module-contracts-summary-price").innerHTML = "€5 / mnd";
}

提前致谢!

首先,将您的 checkboxonchange 事件更改为仅传递 itlsef(作为 this)作为参数。您真的不需要将事件作为参数传递:

<input type="checkbox" class="custom-control-input" onchange="modulecontractsSelect(this);">

然后,更改您的 modulecontractsSelect 函数以接收复选框 (this) 作为参数(我用下面的箭头为您突出显示了它)。如果复选框是 checked,请设置 innerHTML 值。如果不是 checked,将它们设置为空字符串:

                                   ▼
function modulecontractsSelect(checkbox) {
    if (checkbox.checked) {
       document.getElementById("module-contracts-summary").innerHTML = "Module contractbeheer"
       document.getElementById("module-contracts-summary-price").innerHTML = "€5 / mnd";
    }
    else {
       document.getElementById("module-contracts-summary").innerHTML  = "";
       document.getElementById("module-contracts-summary-price").innerHTML  = "";
    }
}

将您的复选框代码更改为:

<input type="checkbox" class="custom-control-input" onchange="modulecontractsSelect(this.checked)">

然后将您的 modulecontractsSelect 函数更改为:

function modulecontractsSelect(is_checked) {
    if( is_checked ) {
        document.getElementById("module-contracts-summary").innerHTML = "Module contractbeheer"
        document.getElementById("module-contracts-summary-price").innerHTML = "€5 / mnd";
    } else {
        document.getElementById("module-contracts-summary").innerHTML = "";
        document.getElementById("module-contracts-summary-price").innerHTML = "";
    }
}

请注意我还没有测试过这段代码,但你应该明白了。