Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 复选框选择触发单击事件后显示相反行为的所有功能_Javascript_Jquery - Fatal编程技术网

Javascript 复选框选择触发单击事件后显示相反行为的所有功能

Javascript 复选框选择触发单击事件后显示相反行为的所有功能,javascript,jquery,Javascript,Jquery,下面是javascript代码,它通过复选框动态添加DIV var mainDiv = document.createElement('div'); mainDiv.className = 'field'; var innerDiv = document.createElement('div'); innerDiv.className = 'SelectAllCheckBox'; var newlabel = document.createElement("Label"); newlabel

下面是javascript代码,它通过复选框动态添加DIV

var mainDiv = document.createElement('div');
mainDiv.className = 'field';

var innerDiv = document.createElement('div');
innerDiv.className = 'SelectAllCheckBox';

var newlabel = document.createElement("Label");
newlabel.innerHTML = "Select All";

var selectCheckbox = document.createElement('input');
selectCheckbox.type = "checkbox";
selectCheckbox.name = "selectCheckbox";
selectCheckbox.id = "selectCheckboxID";
selectCheckbox.checked = true;

innerDiv.appendChild(selectCheckbox);
innerDiv.appendChild(newlabel);

mainDiv.appendChild(innerDiv);

var BusinessUnitsContainerID = document.getElementById('BusinessUnitsContainer');
BusinessUnitsContainerID.parentNode.insertBefore(mainDiv,BusinessUnitsContainerID);
//$j('.Publications input[type=checkbox]').removeAttr('checked');
$evt.addEventHandler(selectCheckbox, "click", this.getDelegate(this._onSelectAllCheckBoxClick));

function _onSelectAllCheckBoxClick()
{
    //(.Publications input[type=checkbox]) these are multiple checkboxes which are also created dynamically
    var checkboxes = document.querySelectorAll('.Publications input[type=checkbox]');   

    for (var i =0; i < checkboxes.length; i++) 
    {
        checkboxes[i].checked = $j("#selectCheckboxID").checked;
        $j(checkboxes[i]).click(); //calling the click for the child checkboxes as they have there click event and I can't change that as it is application generated click event for them.
    }    
};
var mainDiv=document.createElement('div');
mainDiv.className='field';
var innerDiv=document.createElement('div');
innerDiv.className='SelectAllCheckBox';
var newlabel=document.createElement(“标签”);
newlabel.innerHTML=“全选”;
var selectCheckbox=document.createElement('input');
选择checkbox.type=“checkbox”;
selectCheckbox.name=“selectCheckbox”;
selectCheckbox.id=“selectCheckboxID”;
selectCheckbox.checked=true;
innerDiv.appendChild(选择复选框);
innerDiv.appendChild(新标签);
mainDiv.appendChild(innerDiv);
var BusinessUnitsContainerID=document.getElementById('BusinessUnitsContainer');
BusinessUnitsContainerID.parentNode.insertBefore(mainDiv,BusinessUnitsContainerID);
//$j('.Publications输入[type=checkbox]')。removeAttr('checked');
$evt.addEventHandler(选中复选框“单击”,this.getDelegate(选中此复选框单击));
函数_onSelectAllCheckBoxClick()
{
//(.Publications输入[type=checkbox])这些是多个复选框,也是动态创建的
var checkbox=document.querySelectorAll('.Publications输入[type=checkbox]');
对于(变量i=0;i
不知道为什么我的全选复选框它的行为不同,现在第一次单击它并没有取消选中所有子复选框,但是第二次单击它工作正常

知道原因是什么吗

编辑:

//alert("Inside Select All");
    var checkboxes = document.querySelectorAll('.Publications input[type=checkbox]');   

    //alert($("#selectCheckboxID").checked);
    if($("#selectCheckboxID").checked)
    {
        for (var i =0; i < checkboxes.length; i++) 
        {
            checkboxes[i].checked = true;           
            $j("#lblSelectAll").text("Check All");
            $j(checkboxes[i]).click();
        }
    }
    else
    {
        for (var i =0; i < checkboxes.length; i++) 
        {
            checkboxes[i].checked = false;
            $j("#lblSelectAll").text('Uncheck All');  
            $j(checkboxes[i]).click();
        }
    }
//警报(“内部全选”);
var checkbox=document.querySelectorAll('.Publications输入[type=checkbox]');
//警报($(“#选择CheckboxId”)。已选中);
如果($(“#选择CheckBoxId”)。选中)
{
对于(变量i=0;i

上面是我为测试而编写的代码,如何使其简短

替换您的
\n选择复选框单击下面的
函数,然后重试

function _onSelectAllCheckBoxClick()
{
    $('.Publications input[type=checkbox]').click(); // jQuery default selector format
    // if above doesn't work use your format, comment above code and uncomment below code
    // $j('.Publications input[type=checkbox]').click();
    return true;
}

天哪!您正在使用jQuery,但jQuery的唯一一行是
$j(“#selectCheckboxID”)。选中,这是错误的!是的,这是示例代码,但是在其他地方,这是最大限度地使用的。第一次单击时会发生什么?是全部选中还是完全没有更改?在页面加载时,默认选中所有(.Publications input[type=checkbox]),我的“全选”也被选中,但是当我第一次单击时,没有更改,第二次取消选中所有(.Publications input[type=checkbox]),但是现在我的“全选”显示为选中,相反,另一个代码示例也发生了一些问题,您知道如何缩短它吗?这段代码将做什么?我需要在出版物