uitkomst functie 1 overnemen in functie 2

Status
Niet open voor verdere reacties.

tiengemeten

Gebruiker
Lid geworden
9 jan 2008
Berichten
26
Beste mensen,

Nu heb ik twee formulieren; elk formulier roept een functie aan.
Ik wil echter dat als functie 2 aangeroepen wordt dat hij dan het resultaat van functie 1 als invoer gebruikt. hij neemt return x niet over in functie 2. Hoe doe ik dat ? zie de code:
PHP:
//Functie 1
function kiesmaatregelpakketbvb2007(){ 
var keuzebvb2007 = document.maatregelpakketbvb2007.maatregelpakketbvb2007keuze;
if (keuzebvb2007.options[keuzebvb2007.selectedIndex].value != 'geen-maatregelpakket') {
    return x = keuzebvb2007.options[keuzebvb2007.selectedIndex].value;
}
}
//Functie 2
function kiesgemiddeldevuurbelasting() {
var control = document.gemiddeldevuurbelasting.gemiddeldevuurbelastingkeuze;
var x = keuzebvb2007.options[keuzebvb2007.selectedIndex].value;
if (control.options[control.selectedIndex].value != 'geen-gemiddeldevuurbelasting') {
document.write(x*control.options[control.selectedIndex].value);
}
}
Form 1
HTML:
<FORM ACTION="geen_actie" NAME=maatregelpakketbvb2007>
<SELECT NAME="maatregelpakketbvb2007keuze" onchange="kiesmaatregelpakketbvb2007()">
<OPTION VALUE="geen-maatregelpakket" SELECTED>Kies maatregelpakket</OPTION> 
 <OPTION VALUE="1">maatregelpakket I (basis)</OPTION> 
<OPTION VALUE="0,5">maatregelpakket II (binnenaanval)</OPTION> 
<OPTION VALUE="0,1">maatregelpakket IV (sprinkler)</OPTION> 
</SELECT>
</FORM>
Form 2
HTML:
<FORM ACTION="geen_actie" NAME=gemiddeldevuurbelasting>
<SELECT NAME="gemiddeldevuurbelastingkeuze" onchange="kiesgemiddeldevuurbelasting()">
<OPTION VALUE="geen-gemiddeldevuurbelasting" SELECTED>Kies gemiddelde vuurbelasting</OPTION> 
<OPTION VALUE="30">30 (bijv. autoshowroom)</OPTION> 
<OPTION VALUE="60">60 (bijv. bloemenveiling)</OPTION> 
<OPTION VALUE="90">90 (bijv. supermarkt)</OPTION> 
</SELECT></FORM>
 
Laatst bewerkt door een moderator:
return zorgt ervoor dat je 'functie' een waarde krijgt. Neem dit voorbeeld eens:
PHP:
//js
function add(x,y)
{
   return x + y;
}

document.write(add(4,5)); //write 9

dit
return x = keuzebvb2007.options[keuzebvb2007.selectedIndex].value;
werkt niet zo. Wat je wil doen is zoiets (als ik je vraag tenminste snap. Het is me allemaal een beetje onduidelijk):
PHP:
//js
var x;

function kiesmaatregelpakketbvb2007()
{ //FUNCTIE 1
   var keuzebvb2007 = document.maatregelpakketbvb2007.maatregelpakketbvb2007keuze;
   if (keuzebvb2007.options[keuzebvb2007.selectedIndex].value != 'geen-maatregelpakket') {
      x = keuzebvb2007.options[keuzebvb2007.selectedIndex].value;
   }
}


function kiesgemiddeldevuurbelasting()
{ //FUNCTIE 2
   var control = document.gemiddeldevuurbelasting.gemiddeldevuurbelastingkeuze;
   if (control.options[control.selectedIndex].value != 'geen-gemiddeldevuurbelasting') {
      document.write(x*control.options[control.selectedIndex].value);
   }
}

:thumb:
 
Inderdaad, wat Vegras zei, maar ik zie nog een probleem. In de tweede functie staat deze regel:

document.write(x*control.options[control.selectedIndex].value);

Je gebruikt hier document.write() in een event handler.

De functie wordt pas uitgevoerd nadat het HTML bestand volledig is geladen, dan kun je niet meer "in de pagina schrijven". Je zou namelijk buiten de <html> tags schrijven en dat mag niet. Daarom zal de browser een lege pagina openen en daarin schrijven. Op zich geen ramp voor een klein script maar wel voor een normale site.

Daarom kun je het beter anders doen. Zet deze code op de plek waar je de uitkomst wilt hebben:
HTML:
<span id="span_uitkomst"></span>

en verander de document.write(x*control.options[control.selectedIndex].value) in dit:
Code:
document.getElementById("span_uitkomst").innerHTML = kiesmaatregelpakketbvb2007()*control.options[control.selectedIndex].value;
 
Beste Glest,

Bedankt voor de waardevolle extra tip. Ik vroeg me eerlijk gezegd al af wat span nu precies is.

gr JP
 
Laatst bewerkt door een moderator:
het 'span' html element is een inline-element waarmee je, evenals zijn block-element-tegenhanger 'div', opmaak verzorgd in webpagina's. Dit meestal via css.

via het getElementById() 'pak' je, zoals de naam al zegt, een element uit een html pagina. Wat je eigenlijk doet is een *referentie* maken naar dat object. Wat ik daarmee bedoel is dat je door deze code te gebruiken, dit element kan veranderen.

Neem dit voorbeeld:
PHP:
//js
var een_object = document.getElementById('span_uitkomst');

//nu kan je dus van alles ermee doen. Bijvoorbeeld, er text in zetten:
een_object.innerHTML = "hallo!";

De innerHTML-method van javascript kan je gebruiken om de html IN de ge'pakte' tag te veranderen, of te lezen.

zo kan je zoals Glest al als voorbeeld gaf, de inner-html van en span-element lezen of veranderen. In dit geval veranderen.


:thumb:
 
Laatst bewerkt:
Beste Vegras,

Bedankt voor de tip; ik heb nu het boek Javascript&Ajax (van Tom Negrino) gekocht en daar staan ook praktische tips in maar waarschijnlijk voor jullie al bekend.:thumb:

gr JP
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan