チェックボックスがチェックされているかどうかをチェックするJavascript

チェックボックスのグループに対してアクションを実行するjavascriptのルーチンがありますが、最終的なアクションでは、ユーザーがチェックボックスにチェックを入れていたか、チェックを外していたかに基づいて、クリックされたチェックボックスにチェックまたはアンチェックを設定したいと考えています。

残念ながら、チェックされているかどうかをチェックするたびに、ユーザーが常にチェックしていることを示す "on" が返されます。 javascriptも添付しています。

// Uncheck all the checkboxs with the same Tax Credit
for (i=0; i<arrChecks.length; i++)
{
    var attribute = arrChecks[i].getAttribute("xid")
    if (attribute == elementName)
    {
        // if the current state is checked, unchecked and vice-versa
        if (arrChecks[i].value == "on")   // <-- This is always returning true, even if the box is being unchecked
        {
            arrChecks[i].checked = 1;
        } else {
            arrChecks[i].checked = 0;
        }

    } else {
        arrChecks[i].checked = 0;
    }
} 
ソリューション

checkbox要素のcheckedプロパティに対して評価する必要があります。


for (i=0; i
解説 (2)

checkboxvalue`属性は、何で設定するかです。

<input type='checkbox' name='test' value='1'>

つまり、誰かがそのボックスをチェックすると、サーバーは test という名前の変数を value1 で受け取ります。チェックしたいのは、その value ではなく (チェックされていてもいなくても変わることはありません)、チェックボックスの checked ステータスです。

つまり、このコードを置き換えると、次のようになります。

if (arrChecks[i].value == "on") 
{
    arrChecks[i].checked = 1;
} else {
    arrChecks[i].checked = 0;
}

このように

arrChecks[i].checked = !arrChecks[i].checked;

これで動くはずです。これには 01 の代わりに truefalse を使う必要があります。

解説 (2)

何が問題なのかはわかりませんが、これで解決できることは間違いありません。


for (i=0; i
解説 (0)