9

すべてのチェックボックスのチェックを外すのに問題があります。[すべてトグル]チェックボックスをクリックすると、すべてのチェックボックスがオンになる可能性があります。しかし、[すべてトグル]チェックボックスをオフにしても、何も起こりません。すべてのチェックボックスがオフになっているわけではありません。以下は、JavaScriptでの私のコーディングです。

<script>
var isAllCheck = false;
function togglecheckboxes(cn){

    var cbarray = document.getElementsByName(cn);
    for(var i = 0; i < cbarray.length; i++){

        if( isAllCheck == false ){
            cbarray[i].checked = "true";
            //alert( "it is false" );
        }else{ 
            cbarray[i].removeAttribute("checked");
            //alert( "it is true" );
        }
}   
isAllCheck = !isAllCheck;   
}
</script>

私もこのコーディングを試しましたが、それでも失敗しました:

<script>
var isAllCheck = false;
function togglecheckboxes(cn){

    var cbarray = document.getElementsByName(cn);
    for(var i = 0; i < cbarray.length; i++){

        if( isAllCheck == false ){
            cbarray[i].checked = "true";
            //alert( "it is false" );
        }else{ 
            cbarray[i].checked = "false";
            //alert( "it is true" );
        }
}   
isAllCheck = !isAllCheck;   
}
</script>

以下は、参考のために私のPHPコーディングです。

echo "\t<div class='item'>
<span class='CDTitle'>{$cd['CDTitle']}</span>
<span class='CDYear'>{$cd['CDYear']}</span>
<span class='catDesc'>{$cd['catDesc']}</span>
<span class='CDPrice'>{$cd['CDPrice']}</span>
<span class='chosen'><input type='checkbox' name='cd[]' value='{$cd['CDID']}' title='{$cd['CDPrice']}' /></span>
</div>\n";

この問題を解決するためのヒント。前もって感謝します!

4

5 に答える 5

7

checked問題は、checkoxのプロパティをどのように設定しているかに要約されます。ブール値を割り当てる必要がある場所に「true」の文字列を割り当てていますtrue

したがって、コードを修正するのは簡単です。

if( isAllCheck == false ){
    cbarray[i].checked = true;
}else{ 
    cbarray[i].checked = false;
}

または、より簡潔に

cbarray[i].checked = !isAllCheck

実例: http: //jsfiddle.net/SEJZP/

于 2013-03-26T15:01:43.610 に答える
7

アップデート

コメントによるArray.fromと、最近のブラウザではもう必要ないので、

document.querySelectorAll('input[type=checkbox]').forEach(el => el.checked = isAllCheck);

元の回答

UIロジックでそれが正しいことを検証した後isAllCheck、単純なvanilla-jsワンライナーで両方を行うことができます

Array.from(document.querySelectorAll('input[type=checkbox]')).forEach(el => el.checked = isAllCheck);
于 2020-08-17T19:16:01.520 に答える
4

function uncheckElements()
{
 var uncheck=document.getElementsByTagName('input');
 for(var i=0;i<uncheck.length;i++)
 {
  if(uncheck[i].type=='checkbox')
  {
   uncheck[i].checked=false;
  }
 }
}

于 2019-10-08T12:48:26.860 に答える
1

ブール変数にすることもできます。

<script>
var isAllCheck = new Boolean(false);
function togglecheckboxes(cn){

var cbarray = document.getElementsByName(cn);
for(var i = 0; i < cbarray.length; i++){

    if(isAllCheck){ //and then you could make this shorter.
        cbarray[i].checked = true;
        //alert( "it is false" );
    }else{ 
        cbarray[i].removeAttribute("checked");
        //alert( "it is true" );
    }
}   
isAllCheck = !isAllCheck;   
}
</script>
于 2018-02-25T22:27:19.197 に答える
0

これを試して

    <script>
var isAllCheck = false;
function togglecheckboxes(master,cn){

    var cbarray = document.getElementsByName(cn);
    for(var i = 0; i < cbarray.length; i++){

        if( isAllCheck == false ){
            cbarray[i].checked = true;
            //alert( "it is false" );
        }else{ 
            cbarray[i].checked = false;
            //alert( "it is true" );
        }
}   
isAllCheck = !isAllCheck;   
}
</script>
于 2013-03-26T14:52:05.930 に答える