我正在尝试将两个功能组合在一起,以便同时使用它们。我怎样才能做到这一点?

这是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以外的所有复选框。第二个功能应允许用户单击3或4,这将自动选中复选框2。但是只有第二个功能有效,第一个功能将被忽略。 HTML中的onchange =“ showTicks()”。

最佳答案

你可以这样做 :

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);


但这在您的情况下会更加冗长。

当然,如果您的两个函数没有其他用途,那么最简单的方法就是将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);


DEMONSTRATION

09-25 20:31