In een dynamische vragenlijst moet de waarde van een "radio" vraag worden vergeleken met een referentie die vanuit de database is opgehaald (als aan de voorwaarde is voldaan moet een bepaals de regel worden worden weergegeven '....display="block" '. Omdat deze functie niet voor alle vragen geldt (dynamisch) wordt middels een if in PHP bepaald of de functie gebouwd moet worden. Het Javascript ziet er als volgt uit (momenteel).

<?php
echo '<script language="javascript">';
echo 'function '.$display.'()';
echo '{if (document.forms.formname.'.$antwvar.'.value == '.$answer_var[1].')';
echo '{document.all.'.$showID.'.style.display="block";}';
echo '}';
echo '</script>';
?>

het resultaat ziet er dan zo uit :

<script language="javascript">function display_29(){if (document.forms.Trias.Antw29.value == ja){document.all.show_29.style.display="block";}}</script>

als ik de " echo '{if (do......" eruit sloop laat ie wel de regel zien indien in het antwoord (radio) wijzig, de antwoord mogelijkheden zijn in dit geval "ja" & " nee" .

PS functieaanroep is middels "onchange ..."

Heeft iemand een idee waarom dit niet werkt??
Ik snap niet helemaal precies wat je wilt, maar het ruikt wel heel erg naar AJAX. Misschien als je het iets anders formuleert?
de bedoeling is dat een of meerdere volgende vragen worden weergegeven als de voorwaarde (in de if waar is).

het javascript moet de waarde van vraag (in dit geval 29) vergelijken met een referentie waarde (in dit geval "ja") en indien waar word(t)(en) de volgende vra(a)g(en) (met id "show_29") weergegeven.

Het lijkt erop dat de vergelijking niet goed werkt maar het uiteraard geen idee waarom (anders had ik het hiet niet gepost ;))

Betje duidelijker hoop ik??
Het wordt inderdaad al iets duidelijker ;-)

Moet het ook dynamisch zijn? Dus stel, de bezoeker klikt 'ja' aan als radio, moeten de volgende vragen dan verschijnen? En als hij 'nee' klikt, moeten ze dan niet verschijnen?
Kijk het wordt inderdaad duidelijk :)..

Klopt inderdaad, in de else (die er nu nog niet is) komt te staan:
document.all.show_29.style.display="none";
waardoor de vragen met ID Show_29 weer worden verborgen (als het antwoord dus nee is).

Voor de beeld vorming:
stel je voor dat vraag 29 is:
"ben je een beetje thuis in PHP"
Vraag 30 is dan afhankelijk van het antwoord op 29 en bv:
" Motiveer je antwoord."

Als vraag 31 vervolgens een heel andere vraag is die geen "afhankelijke" vragen heeft dan wordt de hele constuctie (dus funcite en aanverwante zaken) niet opgebouwd.
Ik zal een voorbeeld je voor je maken. Voorwaarde is dan wel dat je nog even online blijft, want anders ben ik voor jan met de korte achternaam bezig. Okee?

<script language="javascript">';
echo 'function '.$display.'()';
echo '{if (document.forms.formname.'.$antwvar.'.value == '.$answer_var[1].')'; // oude IE manier, werkt nog wel, maar ik geef geen garantie voor toekomst
echo '{document.all.'.$showID.'.style.display="block";}'; // document.all wordt lang niet overal ondersteund. Daarbij heb je middenin je stukje een string.
echo '}';
echo '</script>'

Moet dus eerder worden

<script type="text/javascript">
function $display()
{
    if(document.getElementById('$formElement').value == '$anwser_var[1]')
    {
       document.getElementById('$showId').style.display = 'block';
    }
}
</script>

Moet je trouwens wel ook een id naast een name attribuut hangen aan je radio-element.
ben vandaag niet meer in de gelegenheid om iets te testen, dat wordt morgen weer..

@Jan: ben zeker geinteresseerd in je voorbeeld..was helaas al niet meer online toen je het aanbod deed...geldt die nog??

@jelmer: de document..."block" en "none" constructie werkt opzich wel en goed...alleen het sturen op basis van een voorwaarde werkt niet
Heb de contructie van Jelmer ingebouwd en het werkt iets beter..het script wordt nu:

<script language="javascript">
function display_29()
{
if (document.getElementById("Antw29").value == "ja"){document.getElementById("show_29").style.display="block";}
else
{document.getElementById("show_29").style.display="none";}
}
</script>

waarbij antw29 de naam en het id van de radio is en show_29 het ID van het stuk dat getoond moet worden.

wat er nu gebeurd is dat er (NA 2X HET ANTWOORD VERANDEREN) het "blok" met id show_29 getoond wordt. De if lijkt dus niet goed te werken.

Het blok wordt ook nooit meer " gehide"

Iemand een idee wat de oorzaak kan zijn..:S
niemand een idee...zit een beetje vast hiermee..:S
mmmmzzzz topic zakt een beetje weg....

Ik heb de oplossing nog niet gevonden.

Nog geprobeerd in een seperate opzet maar zelfde resultaat...

Reageren