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>