「ほぼ」完了したプロジェクトがあります。私はここでたくさんの助けを得て、このプロジェクトをすぐに完成させたいと思っています。3 つの異なる項目の異なる属性を表すチェックボックスを含むフォームがあります。ユーザーが特定のチェックボックスをチェックすると、非表示に対応していないアイテムがあり、チェックされた属性と一致しない属性は無効になり、テキストの色が薄い灰色になります。したがって、まだアクティブなボックスは、そのアイテムと一緒に使用されるボックスのみです。
私はそれをすべてうまく機能させることができます(私は思う)。ただし、複数の項目に対応する属性がいくつかあります。私の例を見ると(リンクが提供されています)
「エコノミー」チェックボックスをオンにすると、灰色のボックス「ベルニーニ」が 1 つだけ表示され、他の多くのチェックボックスが無効になります。これは正しいです。チェックを外すと、すべてが有効になり、再び表示されます。
'Tape-in Bottom Rail' チェックボックスをオンにすると、2 つの灰色のボックス 'Bernini & Picasso' が表示されます。これは、属性 'Tape-in Bottom Rail' が両方に適用されるため、正しいものです。チェックを外すと、すべてが有効になり、再び表示されます。
私が抱えている問題は、「エコノミー」と「テープイン ボトム レール」の両方をチェックしてから、どちらかのチェックを外すと、間違った属性が有効になり、表示されている灰色のボックスが正しく対応しなくなることです。
「else if」または別の「if」ステートメントを使用する必要がありますが、そうであれば、それを正しく機能させる方法がわかりません。
これが私がこれまでに使用しているJSです。これは関数の1つだけです。
function bannerBernini() {
if (document.checkForm1.att_2.checked || document.checkForm1.att_5.checked || document.checkForm1.att_6.checked || document.checkForm2.att_9.checked || document.checkForm2.att_15.checked || document.checkForm3.att_23.checked)
{
var berninis = document.querySelectorAll('.picasso, .matisse, .picasso-matisse');
for (var i = 0; i < berninis.length; i++) {
berninis[i].style.color="#d1d1d1";}
var not_bernini = document.querySelectorAll('#att_3, #att_10, #att_11, #att_13, #att_14, #att_16, #att_17, #att_18, #att_19, #att_20, #att_21, #att_22, #att_24');
for (var j = 0; j < not_bernini.length; j++){
not_bernini[j].disabled=true;}
document.getElementById("Picasso").style.display="none";
document.getElementById("Matisse").style.display="none";
}
else
{
var berninis = document.querySelectorAll('.picasso, .matisse, .picasso-matisse');
for(var i = 0; i < berninis.length; i++) {
berninis[i].style.color="";}
var not_bernini = document.querySelectorAll('#att_3, #att_10, #att_11, #att_13, #att_14, #att_16, #att_17, #att_18, #att_19, #att_20, #att_21, #att_22, #att_24');
for (var j = 0; j < not_bernini.length; j++){
not_bernini[j].disabled=false;}
document.getElementById("Picasso").style.display="";
document.getElementById("Matisse").style.display="";
}}
これが理にかなっているサンプルです:
http://jsfiddle.net/g_borg/48uhn/1/
ご協力いただきありがとうございます。jQueryを使用する必要があると言う人もいますが、私はそうしますが、javascriptを使用してコードを作成しようとするのはこれが初めてであり、jQueryに慣れていないため、コードをまだ理解しているところでこれを維持したいと思います.