if (document.forms['foo'].elements['bar'][5].checked=true)
?
red\ då bör Else-satsen vara så här:
elseif (document.forms['foo'].elements['bar'][5].checked=false)
11 svar · 314 visningar · startad av @nders
Hej!
Jag har ett formulär, som innehåller sex radioknappar, en av dessa har en onchange-eventhandler. Formuläret ser ut så här:
<form name="foo" id="foo">
<input type="radio" name="bar" id="bar" value="1">
<input type="radio" name="bar" id="bar" value="2">
<input type="radio" name="bar" id="bar" value="3">
<input type="radio" name="bar" id="bar" value="4">
<input type="radio" name="bar" id="bar" value="5">
<input type="radio" name="bar" id="bar" value="6" onchange="checkValue();">
</form>
Jag har ett <div>-block som ser ut så här:
<div name="extrastuff" id="extrastuff" style="display:none;">
<!-- lite ditten och datten här -->
</div>
Jag vill, att när den sista radioknappen markeras, eller avmarkeras, ska följande funktion köras:
<script>
function checkValue() {
if (document.forms['foo'].elements['bar'][5].checked)
document.getElementById('extrastuff').style.display='';
else
document.getElementById('extrastuff').style.display='none';
}
</script>
Jag testade först att använda getElementById i min if-sats i funktionen också, men det ville inte alls fungera. Fel gjorde jag nog. ;)
Koden gör följande i IE6:
* Ingenting när man markerar radioknappen med värde 6.
* Visar min <div> när man avmarkerar knappen.
Koden gör detta i Mozilla:
* Visar min <div> när man markerar knappen (rätt!)
* Ingenting när man avmarkerar / väljer en annan radioknapp.
Jag har dock skrivit denna kod direkt ur skallen, för det är för mycket skräp och märkliga saker i originalkoden, det skulle ta för lång tid att rensa. Det har dock tyvärr medfört att ovan kod inte verkar fungera alls. ;)
Men förhoppningsvis förstår någon vad jag vill göra, och kanske kan hjälpa en serverkille att pilla till så klienten förstår vad jag menar. ;)
Mvh och tpf,
if (document.forms['foo'].elements['bar'][5].checked=true)
?
red\ då bör Else-satsen vara så här:
elseif (document.forms['foo'].elements['bar'][5].checked=false)
Bara en fråga, varför har du både name o id i elemeten?
I ditt fall använder du enbart name för checkboxarna och id för div o annat.
Eller för att vara mer tydlig, ett id i ett dokument måste vara unikt. Något som då inte stämmer i checkboxarna.
PepeJeria skrev:
Bara en fråga, varför har du både name o id i elemeten?
Ingen aning, men det ser inte riktigt ut så i originalkoden. ;)
I ditt fall använder du enbart name för checkboxarna och id för div o annat.
Okay, men det blev (kanske inte helt oväntat) någon funktionalitetsförändring med de ändringarna.
LeonL: nej, någon elseif behövs inte, det duger bra med en else. ;)
Mvh
Funkar det nu då eller? :o
Nej, det fungerar inte.
Funkar det kanske bättre såhär?
if (document.forms['foo'].elements['bar'][5].checked)
document.getElementById('extrastuff').style.display='display';
Du menar något i denna stil?
<form name="foo">
<input type="radio" name="bar" value="1">
<input type="radio" name="bar" value="2">
<input type="radio" name="bar" value="3">
<input type="radio" name="bar" value="4">
<input type="radio" name="bar" value="5">
<input type="radio" name="bar" value="6">
</form>
<div id="extrastuff" style="display:none;">
Synligt när sista radio-button är checkad
</div>
<script type="text/javascript">
var form = document.forms["foo"];
for(var i=0; i<form.bar.length; i++)
{
form.bar[i].onclick = checkValue;
}
function checkValue()
{
document.getElementById('extrastuff').style.display = (this.checked && this.value == 6)? "":"none";
}
</script>
Det fungerar ju fullkomligt lysande!
Tack så alldeles infernaliskt mycket för hjälpen! :D :D :D
Mvh,
anders
Bitte! :bire