javascript函数未执行

javascript function is not executing

本文关键字:执行 函数 javascript      更新时间:2023-09-26

我有一个复选框。如果我选中它,它将选择所有结果:HTML:

<input type="checkbox" id="selectallcheckbox" onClick="toggle(this)" />

和Javascript:

function toggle(source = false) {
    if(!source)
    {
        var source = document.getElementById('selectallcheckbox');
    }
  checkboxes = document.getElementsByName('id[]');
  for(var i=0, n=checkboxes.length;i<n;i++) {
    checkboxes[i].checked = source.checked;
    var id = checkboxes[i].id;
    var res = id.replace("checkbox", "tr");
    if(source.checked)
    {
        $('#' + res + '').addClass('selected');
    } else {
        $('#' + res + '').removeClass('selected');
    }
  }
}

现在,如果我单击键盘上的CTRL+A,我将尝试选择所有结果。这是我的JavaScript:

jQuery(document).keydown(function(e) {
  if (e.ctrlKey) {
    if (e.keyCode == 65 || e.keyCode == 97) { // 'A' or 'a'
      e.preventDefault();
      toggle();
    }
  }
});

但这个功能不起作用。如何使ctrl+a选择所有结果

切换函数需要一个参数或不需要任何参数。当没有传递参数时,可以直接从dom获取参数本身。在html中,toggle函数获取this关键字。元素本身被传递。但如果没有传递参数,则参数是未定义的,因此可以动态计算:

<input type="checkbox" id="selectallcheckbox" onClick="toggle(this)"/>

在切换功能中,尝试从以下内容更改:

function toggle(source = false) {
   if(!source)
   {
      var source = document.getElementById('selectallcheckbox');
   }
   ...........

至:

   function toggle(source) {
        if (source === undefined) {
            source = document.getElementById('selectallcheckbox');
        }

最后,在您的jQuery(文档)中。keydown(函数(e){更改为:

   jQuery(document).keydown(function(e) {
        if (e.ctrlKey) {
            if (e.keyCode == 65 || e.keyCode == 97) { // 'A' or 'a'
                e.preventDefault();
                // get the argument to the toggle function
                var eleObj = document.getElementById('selectallcheckbox');
                // toggle the checkbox status
                eleObj.checked = !eleObj.checked;
                // call the toggle function with the correct argument
                toggle(eleObj);
            }
        }
    });

我找到了解决方案:

jQuery(document).keydown(function(e) {
  if (e.ctrlKey) {
    if (e.keyCode == 65 || e.keyCode == 97) { // 'A' or 'a'
      e.preventDefault();
      document.getElementById("selectallcheckbox").click();
    }
  }
});