2013-10-14 26 views
0

我有以下功能:應用的功能,兩個ID

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

這使得一個選擇框成爲ungreyed如果選擇一臺收音機。

我還有一個選擇框,我想成爲ungreyed二,以「OPT2」

的ID我怎麼會這樣添加上述功能。

我曾嘗試:

document.getElementById("opt1").disabled && document.getElementById("opt2").disabled 

,並在此有一些變化,但一直沒能得到它的工作。

回答

3

就這樣?

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; 
    } 
} 
+0

太多行...'FALSE'和TRUE;相對地相關'el.checked'。不需要'if'分支...看看我的答案。 –

+1

@OZZelig取決於編碼風格。 –

+1

嗯...同意有時清晰度更好,但 - 8行而不是2?即使是你的建議詳細的形式,它可能會更清晰。另外,如果您的業務規則發生變化,您現在有大約4條線路需要維護,這很容易出錯。 –

3
<script> 
function setFries(){ 
    var el = document.getElementById("burger"); 
    document.getElementById("opt1").disabled = document.getElementById("opt2").disabled = !e1.checked; 
</script> 

清潔&優雅。

1
function setFries(){ 
    var el = document.getElementById("burger"); 
    document.getElementById("opt1").disabled =document.getElementById("opt2").disabled= !el.checked; 
} 

但是,更好的方法是將相同的CSS類分配給兩者並根據類進行更改。 例如:

function setFries(){ 
    var el = document.getElementById("burger");  
    document.getElementsByClassName('yourCommonClassName').disabled = !el.checked; 
} 
1

當前您對if和else分支的操作​​是單個語句。你需要把它們變成塊,這樣更多的操作可以執行時的條件是真還是假:

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; 

最後,你可以提取元素,就像你與漢堡人做變量發生變化,因此代碼更易於閱讀。

完整的示例:

<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> 
+0

有兩個班輪會更好嗎? –

+1

這取決於這是OP在該功能中唯一想做的事情。兩班輪更難改變。無論如何,我已經提出瞭解決方案,因爲我喜歡簡潔的可讀性。如果你放棄el變量並把它變成一行,就可以獲得獎勵馬鈴薯;)。編輯:我喜歡簡潔,但我不用它與顯然只是學習的人。 – Tibos

+0

不是問題:) 'document.getElementById(「opt1」)。disabled = document.getElementById(「opt2」)。disabled =!document.getElementById(「burger」)。checked; –