[js] berekening || value in option

Pagina: 1
Acties:

  • Daniel304
  • Registratie: December 2000
  • Laatst online: 14-08 14:02
een laatste vraag
Ik heb een javascript die de opties van verschillende select boxes uitleest
nou is de bedoeling dat wanneer er een value in staat dat hij die standaard optelt... De laatste select box bestaat wel/niet maar daarin staat een extra berekening bijvoorbeeld (/10-100)*19. Deze moet hij uitvoeren. lastige deze dingen worden uit een databse getrokken dus erg lastig direct in html te zetten.

selectedtype = formnaam, prijsplek is de plek waar de waarde veranderd.
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
function gone(selectedtype, standaardprijs, prijsplek)
{
      standaardprijs = parseFloat(standaardprijs);
      var mySelectBoxes = document.forms[selectedtype].getElementsByTagName('select');
      for (var i = 0; i < mySelectBoxes.length - 1; i++)
      { 
         standaardprijs += parseFloat(mySelectBoxes[i].value);
      }
      standaardprijs = standaardprijs mySelectBoxes[i+1].value;
      document.getElementById(prijsplek).firstChild.nodeValue = standaardprijs;
}

Verwijderd

wat is nou je probleem? je wil die berekening uitvoeren?

In dat geval is dit één van de weinige gevallen dat eval(); je vriend is :P

  • Daniel304
  • Registratie: December 2000
  • Laatst online: 14-08 14:02
inderdaad sorry was niet duidelijk ik wil als laatste die berekening uitvoeren

Verwijderd

dan is dat wel te doen, als je in die berekeningselect iets hebt staan als "(x*6)/sin(x)" ofzo dan zou ik dat als volgt aanpakken (na je for loop):
JavaScript:
1
2
  expr = 'standaardprijs='+mySelectBoxes[i+1].value.replace(/x/gi,'standaardprijs');
  eval(expr);

[ Voor 9% gewijzigd door Verwijderd op 27-08-2003 10:01 ]


  • Daniel304
  • Registratie: December 2000
  • Laatst online: 14-08 14:02
ik krijg foutmelding dat er een / word verwacht na de eval en voor het document
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
   function gone(selectedtype, standaardprijs, prijsplek)
   {
      standaardprijs = parseFloat(standaardprijs);
      var mySelectBoxes = document.forms[selectedtype].getElementsByTagName('select');
      for (var i = 0; i < mySelectBoxes.length-1; i++)
      { 
         standaardprijs += parseFloat(mySelectBoxes[i].value);
      }
      Expr = 'standaardprijs='+mySelectBoxes[i].value.replace(/x/gi,'standaardprijs');
      eval(Expr);
      document.getElementById(prijsplek).firstChild.nodeValue = standaardprijs;
   }

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

(x*6)/sin(x)
doe dan ook een replace van sin naar Math.sin, of zet de expressie in een with(Math) { } ;)

debuggen is in dit geval trouwens simpel door voor de eval even een alert te zetten.

[ Voor 26% gewijzigd door crisp op 27-08-2003 10:29 ]

Intentionally left blank


  • Daniel304
  • Registratie: December 2000
  • Laatst online: 14-08 14:02
hebbus :)
JavaScript:
1
2
3
4
      Expr = 'standaardprijs='+ standaardprijs + mySelectBoxes[i].value.replace(/x/gi,'standaardprijs');
      eval(Expr);
      standaardprijs = Math.round(standaardprijs);
      document.getElementById(prijsplek).firstChild.nodeValue = standaardprijs;

Verwijderd

crisp schreef op 27 August 2003 @ 10:28:
[...]


doe dan ook een replace van sin naar Math.sin, of zet de expressie in een with(Math) { } ;)

debuggen is in dit geval trouwens simpel door voor de eval even een alert te zetten.
:D even een moment van onoplettendheid, was ook maar even als voorbeeld, anders betaal je je dalijk helemaal blauw als je prijs een veelvoud van pi is :D

"ja meneer, deze cd kost inderdaad 8 Pi euro" :P)
Pagina: 1