0

2つの機能を組み合わせて、両方を同時にしようとしています。これどうやってするの?

JavaScript は次のとおりです。

function showTicks()
{
    if (chooseShield.value == ("ely"))
    {
        document.getElementById("cb1").disabled=false;
        document.getElementById("cb2").disabled=false;
        document.getElementById("cb3").disabled=false;
        document.getElementById("cb4").disabled=false;
        document.getElementById("cb5").disabled=true;
        document.getElementById("cb6").disabled=true;
        document.getElementById("cb7").disabled=true;
        document.getElementById("cb8").disabled=true;
        document.getElementById("cb9").disabled=true;   
    }
}

function checkchecks() 
{
    if(likeShield.value == ("noShield") && chooseShield.value == ("ely") && (cb3.checked   == true || cb4.checked == true))
    {
        document.getElementById("cb2").checked=true;
    }

    likeShield.onchange=checkchecks
    chooseShield.onchange=checkchecks
    cb3.onchange=checkchecks
    cb4.onchange=checkchecks
}

  function doBoth() {
  checkAll();
  checkchecks();
}
likeShield.onchange=doBoth;
chooseShie;d.onchange=doBoth;
cb3.onchange=doBoth;
cb4.onchange=doBoth;

最初の関数は、1、2、3、および 4 を除くすべてのチェックボックスを無効にします。2 番目の関数は、チェックボックス 2 を自動的にオンにする 3 または 4 をクリックできるようにする必要があります。ただし、2 番目の関数のみが機能し、最初の関数は無視されます。html の onchange = "showTicks()"。

4

1 に答える 1

2

あなたはこれを行うことができます :

var doBoth = function(){
      showTicks();
      checkchecks();
};
likeShield.onchange=doBoth;
chooseShield.onchange=doBoth;
cb3.onchange=doBoth;
cb4.onchange=doBoth;

別のオプションは、 addEventListener を使用することです。

likeShield.addEventListener('change', showTicks);
likeShield.addEventListener('change', checkchecks);

しかし、あなたの場合はもっと冗長になります。

もちろん、2 つの関数が他の目的を果たさない場合、showTicks 関数のコードを取り出して checkchecks 関数に入れるのが最も簡単です。

chooseShieldまた、次のような変数が定義されていることを確認することを忘れないでください。変数を定義する方法は次のとおりです。

var chooseShield = document.getElementById('chooseShield');
var likeShield = document.getElementById('likeShield');
for (var i=1; i<10; i++) window['cb'+i]=document.getElementById('cb'+i);

デモンストレーション

于 2012-11-18T15:20:55.240 に答える