checkbox.checked总是在onclick函数内返回true

时间:2013-11-26 17:26:11

标签: javascript html jsp checkbox onclick

我想出了这个看似简单的问题。我的JSP页面中有一个复选框和一个与之关联的onclick。当我单击复选框时,我需要在此onclick函数内部检查是否已选中或取消选中以了解要采取的操作。但是,它总是被检查!我不知道为什么。它几乎就像点击操作完成并在它到达此功能之前标记它已检查。但是,如果我做一个简单的HTML示例页面,它可以正常工作并返回.checked的正确值。 我已经尝试删除“this”并只是通过onclick上的ID调用复选框,结果相同 这是设置:

<label><input type="checkbox" onclick="selectEntireRange(this);"/> Select ALL Ranges</label>

这是JS:

function selectEntireRange(checkElement)
{
  // if checked - remove check and display table rows normally
  if(checkElement.checked)
  {
    //ALWAYS EXECUTES HERE!
    checkElement.checked = false;
    greyoutAllTableRows(false);
  }
  // if unchecked - mark 'checked' and grey out all table rows
  else
  {
    checkElement.checked = true;
    setAllCheckBoxes(false);
    var selectedRangeField = document.getElementById('effRange');
    selectedRangeField.value = '';
    greyoutAllTableRows(true);
  }
}

任何帮助都会很棒!谢谢!

P.S。我不能使用jQuery!

2 个答案:

答案 0 :(得分:0)

怎么样

onclick="selectEntireRange(this.checked)"

然后更改函数以询问其是真还是假或0或1或者默认检查值是什么。不确定。

答案 1 :(得分:0)

问题出现是因为您在if / else块中设置了checkElement.checked = false;。注释\删除该行,它将工作。由于点击后您将其设置为false,因此复选框不会进入检查状态,每次用户点击它时,都会因checkElement.checked = false;行而取消选中。