@ndersMedlem sedan juni 200032 969 inlägg 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,
LeonLMedlem sedan dec. 20025 871 inlägg 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.
@ndersMedlem sedan juni 200032 969 inlägg
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
LeonLMedlem sedan dec. 20025 871 inlägg Funkar det nu då eller? :o
SebbeMedlem sedan jan. 20032 285 inlägg Funkar det kanske bättre såhär?
if (document.forms['foo'].elements['bar'][5].checked)
document.getElementById('extrastuff').style.display='display';
@ndersMedlem sedan juni 200032 969 inlägg Nej, tyvärr. "Could not get the display property. Invalid argument."
Mvh
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>
@ndersMedlem sedan juni 200032 969 inlägg Det fungerar ju fullkomligt lysande!
Tack så alldeles infernaliskt mycket för hjälpen! :D :D :D
Mvh,
anders