Javascript 为什么单击后无法取消选中此复选框?

Javascript 为什么单击后无法取消选中此复选框?,javascript,html,forms,Javascript,Html,Forms,我目前正在尝试在我的网站上的表单中使用以下代码 <p class="formtag">Minimum Price: </p> <input type="number" style="width: 50px; margin-right: 15px;" name="minprice" id="minprice"> <p class="formtag">Maximum Price: </p> <input type="number" s

我目前正在尝试在我的网站上的表单中使用以下代码

<p class="formtag">Minimum Price: </p>
<input type="number" style="width: 50px; margin-right: 15px;" name="minprice" id="minprice">
<p class="formtag">Maximum Price: </p>
<input type="number" style="width: 50px; margin-right: 15px;" name="maxprice" id="maxprice">


<p class="formtag">Show Only Free Resources </p>
<input type="checkbox" id="freecheck" onchange="disableprice()" name="freecheck" value="freeonly">
其思想是,如果选中该复选框,则最高和最低价格的输入字段将被禁用,否则它们应该是可编辑的

我遇到的问题是,一旦用户选中了复选框,就不能取消选中它。我目前正在努力找出原因,但我开始怀疑这与我使用的代码
文档.getElementById('freecheck').checked=“true”
有关


有谁能告诉我如何解决此问题吗?

您正在将值“true”指定给checked,然后检查其值,因此它总是
true

if(document.getElementById('freecheck').checked = "true") {
这是一个赋值,它应该是两个等号的比较。此外,正如@DavidThomas所述,
checked
属性是布尔值,因此您应该检查布尔值
true
值:

if(document.getElementById('freecheck').checked == true) {


您将值“true”指定给checked,然后检查其值,因此它总是
true

if(document.getElementById('freecheck').checked = "true") {
这是一个赋值,它应该是两个等号的比较。此外,正如@DavidThomas所述,
checked
属性是布尔值,因此您应该检查布尔值
true
值:

if(document.getElementById('freecheck').checked == true) {

参考:


参考:

好的,这是您正在寻找的解决方案

这是你的新代码

<input type="checkbox" id="freecheck" onclick="myonclickhandler(this);" name="freecheck" value="freeonly">

这是您的javasript代码

<script type="text/javascript">
var t = document.getElementById("freecheck");

function myonclickhandler(t) {
    if (t.checked) {
        document.getElementById('minprice').value = "";
        document.getElementById('minprice').disabled = "disabled";
        document.getElementById('maxprice').value = "";
        document.getElementById('maxprice').disabled = "disabled";
    }
    else {
        document.getElementById('minprice').disabled = "false";
        document.getElementById('maxprice').disabled = "false";
    }
}
</script>

var t=document.getElementById(“freecheck”);
函数myonclickhandler(t){
如果(t.checked){
document.getElementById('minprice')。value=“”;
document.getElementById('minprice').disabled=“disabled”;
document.getElementById('maxprice')。value=“”;
document.getElementById('maxprice').disabled=“disabled”;
}
否则{
document.getElementById('minprice')。disabled=“false”;
document.getElementById('maxprice')。disabled=“false”;
}
}

希望这对你有所帮助好的,这是你一直在寻找的解决方案

这是你的新代码

<input type="checkbox" id="freecheck" onclick="myonclickhandler(this);" name="freecheck" value="freeonly">

这是您的javasript代码

<script type="text/javascript">
var t = document.getElementById("freecheck");

function myonclickhandler(t) {
    if (t.checked) {
        document.getElementById('minprice').value = "";
        document.getElementById('minprice').disabled = "disabled";
        document.getElementById('maxprice').value = "";
        document.getElementById('maxprice').disabled = "disabled";
    }
    else {
        document.getElementById('minprice').disabled = "false";
        document.getElementById('maxprice').disabled = "false";
    }
}
</script>

var t=document.getElementById(“freecheck”);
函数myonclickhandler(t){
如果(t.checked){
document.getElementById('minprice')。value=“”;
document.getElementById('minprice').disabled=“disabled”;
document.getElementById('maxprice')。value=“”;
document.getElementById('maxprice').disabled=“disabled”;
}
否则{
document.getElementById('minprice')。disabled=“false”;
document.getElementById('maxprice')。disabled=“false”;
}
}
希望这有助于像下面这样做, 它将在以下方面发挥作用:

更改javascript函数

function disableprice() {
    if(document.getElementById('freecheck').checked) {
        document.getElementById('minprice').value = "";
        document.getElementById('minprice').disabled = true;
        document.getElementById('maxprice').value = "";
        document.getElementById('maxprice').disabled = true;
    }

    else {
        document.getElementById('minprice').disabled = false;
        document.getElementById('maxprice').disabled = false;
    }

}
还可以找到工作小提琴 像下面这样做, 它将在以下方面发挥作用:

更改javascript函数

function disableprice() {
    if(document.getElementById('freecheck').checked) {
        document.getElementById('minprice').value = "";
        document.getElementById('minprice').disabled = true;
        document.getElementById('maxprice').value = "";
        document.getElementById('maxprice').disabled = true;
    }

    else {
        document.getElementById('minprice').disabled = false;
        document.getElementById('maxprice').disabled = false;
    }

}
还可以找到工作小提琴

它永远不会等于
“true”
(字符串),尽管它可能等于
true
(布尔)。@DavidThomas实际上,正如您所知,Javscript是弱类型的,因此任何非空字符串==true@DavidThomas:好的,我为
true
@gontrollez更改了最后一个“true”,现在你还没有从我的答案中复制出来吗?它永远不会等于
“true”
(字符串),尽管它可能等于
true
(布尔值)。@DavidThomas实际上,正如你所知,Javscript是弱类型的,所以任何非空字符串==true@DavidThomas:好的,我为
true
@gontrollez更改了最后一个“true”,现在你还没有抄我的答案吗?这个答案对我有什么补充吗?你没有解释问题是什么,解决方案是相同的。你难道看不到不同的b/w文档。getElementById('freecheck')。检查和文档。getElementById('freecheck')。检查=='true'?这个答案对我的答案有帮助吗?您没有解释问题是什么,解决方案是相同的。难道您看不到差异b/w文档。getElementById('freecheck')。已检查和文档。getElementById('freecheck')。已检查=='true'??