Javascript 将函数应用于两个ID

Javascript 将函数应用于两个ID,javascript,Javascript,我有以下功能: <script> function setFries(){ var el = document.getElementById("burger"); if(el.checked) document.getElementById("opt1").disabled = false; else document.getElementById("opt1").disabled = true; } </script> 在这方面有一些变化,但一直无法让它工作

我有以下功能:

<script>  function setFries(){
var el = document.getElementById("burger");
if(el.checked)
  document.getElementById("opt1").disabled = false;
else
 document.getElementById("opt1").disabled = true; }  </script>
在这方面有一些变化,但一直无法让它工作

就这样

function setFries() {
    var el = document.getElementById("burger");
    if (el.checked) {
        document.getElementById("opt1").disabled = false;
        document.getElementById("opt2").disabled = false;
    } else {
        document.getElementById("opt1").disabled = true;
        document.getElementById("opt2").disabled = true;
    }
}

函数setFries(){
var el=document.getElementById(“汉堡”);
document.getElementById(“opt1”).disabled=document.getElementById(“opt2”).disabled=!e1.checked;
干净优雅

function setFries(){
  var el = document.getElementById("burger");
  document.getElementById("opt1").disabled =document.getElementById("opt2").disabled= !el.checked;
}
然而,更好的方法是将相同的CSS类分配给这两个类,并根据类进行更改。 例如:


当前,if和else分支上的操作是单个语句。您需要将它们转换为块,以便在条件为true或false时可以执行更多操作:

if (...) { // notice the brackets
  // action 1
  // action 2
} else {
  // action 3
  // action 4
}
a&&b
是一个逻辑操作。您不需要它。要执行两个操作,只需依次编写它们:

document.getElementById("opt1").disabled = false;
document.getElementById("opt2").disabled = false;
最后,您可以像使用burger one一样提取要在变量中更改的元素,因此代码更易于阅读

完整示例:

<script>  
function setFries(){
  var el = document.getElementById("burger");
  var opt1 = document.getElementById("opt1");
  var opt2 = document.getElementById("opt2");
  if(el.checked) {
    opt1.disabled = false;
    opt2.disabled = false;
  } else {
    opt1.disabled = true;
    opt2.disabled = true;
  }
</script>

函数setFries(){
var el=document.getElementById(“汉堡”);
var opt1=document.getElementById(“opt1”);
var opt2=document.getElementById(“opt2”);
如果(标高已勾选){
opt1.disabled=false;
opt2.disabled=false;
}否则{
opt1.disabled=true;
opt2.disabled=true;
}

太多行…
false
true
el相反。选中了
。如果
分支,则无需使用
,请查看我的答案。@OferZelig取决于编码样式。嗯…同意有时清晰度更好,但-8行而不是2行?即使在您建议的详细形式中,也可能会出现错误更清楚了。此外,如果更改了业务规则,您现在需要维护大约4行代码,这很容易出错。使用2行代码不是更好吗?这取决于OP是否只想在函数中执行这项操作。两行代码更难更改。无论如何,我已经对您的解决方案进行了升级,因为我喜欢简洁而不是可读性好吧。如果你放弃el变量并将其转换为一行代码,那将是一个额外的收获;)。编辑:我喜欢简洁,但我不喜欢那些显然只是在学习的人。没问题:)
document.getElementById(“opt1”).disabled=document.getElementById(“opt2”).disabled=!document.getElementById(“burger”).checked;
if (...) { // notice the brackets
  // action 1
  // action 2
} else {
  // action 3
  // action 4
}
document.getElementById("opt1").disabled = false;
document.getElementById("opt2").disabled = false;
<script>  
function setFries(){
  var el = document.getElementById("burger");
  var opt1 = document.getElementById("opt1");
  var opt2 = document.getElementById("opt2");
  if(el.checked) {
    opt1.disabled = false;
    opt2.disabled = false;
  } else {
    opt1.disabled = true;
    opt2.disabled = true;
  }
</script>