2012-01-12 132 views
2

我有以下的jsfiddle設置:獲取單選按鈕值的onload和隱藏或顯示DIV

http://jsfiddle.net/cvn6n/

基於無線電選擇一個div被隱藏或顯示(如果選擇奧迪的股利是隱藏的,如果選擇了其他值,則顯示div)。我遇到的問題是我需要檢測單選按鈕的初始值(onload),並相應地隱藏或顯示div。

Audi <input type="radio" name="car" id="audi" value="3" checked="checked" onclick="toggle(this)"> 
<br /> 
Merc <input type="radio" name="car" id="merc" value="3" onclick="toggle(this)"> 
<br /> 
BMW <input type="radio" name="car" id="bmw" value="3" onclick="toggle(this)"> 
<br /><br /> 
<div id="testdiv"> 
Not Audi 
</div> 

var t = document.getElementById('testdiv'); 

t.style.visibility = 'visible';     
function toggle(switchElement) { 
    if (switchElement.id != 'audi'){ 
     t.style.display = 'inline'; 
    }else{ 
     t.style.display = 'none'; 
    } 
} 

感謝您的幫助提前。

ps。沒有jQuery,請只是單純的JS解決方案

回答

3
[].forEach.call(document.forms.carform.car, function(radio){ 
     if(radio.checked) { 
      toggle(radio); 
     } 
}); 

http://jsfiddle.net/cvn6n/1/

+0

感謝您幫助我解決這個問題:) – Dino 2012-01-12 16:45:08

0

從你的榜樣,注意到我感動的積極價值,芝加哥商業交易所,也注意到你應該設置顯示:沒有你的testdiv當你初始化:

Audi <input type="radio" name="car" id="audi" value="3" onclick="toggle(this)"> 
<br /> 
Merc <input type="radio" name="car" id="merc" value="3" checked="checked" onclick="toggle(this)"> 
<br /> 
BMW <input type="radio" name="car" id="bmw" value="3" onclick="toggle(this)"> 
<br /><br /> 
<div id="testdiv" style="display:none;"> 
Not Audi 
</div> 

對於javascript,您可以將我添加到window.onload或您的頁面底部的部分放入,因此在DOM完成加載後觸發。基本上,它會檢查提供的ID列表,併爲活動的ID設置toggle()。

var t = document.getElementById('testdiv'); 

t.style.visibility = 'visible';     
function toggle(switchElement) { 
    if (switchElement.id != 'audi') { 
     t.style.display = 'inline'; 
    }else{ 
     t.style.display = 'none'; 
    } 
} 

var listOfIds = new Array("audi", "merc", "bmw"); 
for (x in listOfIds) { 
    var element = document.getElementById(listOfIds[x]); 
    if (element.checked) { 
     toggle(element); 
    } 
} 
+0

http://jsfiddle.net/cvn6n/2/ – sonjz 2012-01-12 15:36:53

+0

感謝您的幫助,我已經決定與@Esailija解決方案,而不是去純粹是因爲建築由於汽車品牌不固定,因此ID數組只是額外的開銷,並且會有所不同。但非常感謝,並會銘記這個解決方案:) – Dino 2012-01-12 16:44:34

相關問題