var in document.

Status
Niet open voor verdere reacties.

twiggit

Gebruiker
Lid geworden
25 feb 2010
Berichten
8
Goeden avond allen,

Ik heb een probleem met een dacht ik simpel javascript.
Ik wil de prijs met het aantal vermenigvuldigen.

Nu is het zo dat het aantal wordt gekozen in een dropbox.
De naam van die dropbox is aantal +een uniek nr.
Dit omdat het uit een db komt en het dus een variabele hoeveelheid is.

Nu heb ik de volgende functie
[JS]
function test(i) {

var getal1 = ( document.javascript.prijs.value - 0 );
var getal2 = ( document.javascript.('aantal'+i).value - 0 );


document.getElementById('uitkomst'+i).innerHTML = getal1 * getal2;
alert ('uitkomst'+i)

}
</script>
[/JS]

var getal2 = ( document.javascript.('aantal'+i).value - 0 );

Dat werkt niet.
Weet iemand hoe dat wel moet in js

het moet dus worden aantal1 of aantal2 afhankelijk van de var i.

Groeten rick
 
[JS]document.javascript.[/JS]
is raar (bestaat niet). Er is geen 'javascript' object in 'document'. Nu, om je vraag goed te kunnen beantwoorden: hoe ziet je gegenereerde HTML eruit? Overgens, hier een longshot: waarom pak je de waarde niet door het object te pakken met getElementById()? En, nog iets: een globale variabele kan je gewoon aanroepen in een functie.
 
Laatst bewerkt:
html

Dit is de html code

HTML:
  <td class="normal"><select name="aantalp" onchange='ptellen(0)'><option value="1">1</option><option value="2">2</option><option value="3" >3</option><option value="4">4</option></select></td>
    <input type="hidden" value="85" name="pprijs" />
    <td class="normal"><div id="ptotal0">85</div></td>

[JS]

<script type="text/javascript">
function ptellen(i) {
var prijsps = ( document.javascript.pprijs.value - 0 );
var aantal = ( document.javascript.aantalp1.value - 0 );
document.getElementById('ptotal'+i).innerHTML = prijsps * aantal;

}

</script>
[/JS]

Werkt wel.
Maar aantalp in

[JS]
var aantal = ( document.javascript.aantalp1.value - 0 );
[/JS]

Is variabel dus daarom de +i.

Hier als laatste nog de php code om het compleet te maken

PHP:
  <?php

    for($x = 0; $x  < count($inhoudwwvprijs); ++$x){
          
  ?>
  
  <tr>
    <td class="wwfoto"><img src="plaatjes/<?php echo $inhoudwwfoto1[$x]?>" alt="foto" /> </td>
    <td class="normal"><?php echo $inhoudwwnaam[$x] ?></td>
    <td class="normal"><select name="aantalp" onchange='ptellen(<?php echo $x?>)'><option value="1">1</option><option value="2">2</option><option value="3" >3</option><option value="4">4</option></select></td>
    <input type="hidden" value="<?php echo $inhoudwwvprijs[$x]?>" name="pprijs" />
    <td class="normal"><div id="ptotal<?php echo $x?>"><?php echo $inhoudwwvprijs[$x]?></div></td>
    <td class="normal"><a href="deleteww.php?pnr=<?php echo $inhoudwwproductnr[$x]?>" > Verwijderen</a></td>
  </tr>
  <?php
  }
  ?>


document.javascript

staat voor het naam van het formulier de .javascript

Ik weet niet zoveel van javascript ben gewoon verder gegaan in een bestaand script.

Gr,

Rick
 
Laatst bewerkt:
Okay, dit valt best mee. In ieder geval ga ik alles even uitleggen.

Nu, in javascript is er de DOM-functie getElementById(). Deze eet een id van een element op de pagina, en return een handle hiervoor. Dus zoiets:
HTML:
<div id='iets'></div>
[JS]var handle = document.getElementById('iets');[/JS]
goed, omdat je 'dynamische' namen hebt (met een tellertje) kan je het volgende doen:
[JS]var handle = document.getElementById('iets' + i);[/JS], zodat je element bv. een id van 'iets0' of 'iets1' kan hebben.

Dit kan je dus ook toepassen op je andere ding:
[JS]var aantal = document.getElementById('aantalp' + i).value;[/JS]



:thumb:
 
Okay, dit valt best mee. In ieder geval ga ik alles even uitleggen.

Nu, in javascript is er de DOM-functie getElementById(). Deze eet een id van een element op de pagina, en return een handle hiervoor. Dus zoiets:
HTML:
<div id='iets'></div>
[JS]var handle = document.getElementById('iets');[/JS]

Misschien dat dit wel werkt bij getElementById , maar bij document....value werkt dit niet.

Ik heb het volgende gedaan wat wel werkt
[JS]function test(i) {

var aantal = ( document.javascript.huurprijs.value - 0 );
var getal2 = ( document.javascript.huurprijs1.value - 0 );

document.getElementById('uitkomst'+i).innerHTML = aantal * getal2;
alert ('uitkomst'+i);
}
</script>[/JS]

Maar als ik dan doe


[JS]var aantal = ( document.javascript.('huurprijs'+i).value - 0 );[/JS]
ipv
[JS]var aantal = ( document.javascript.huurprijs.value - 0 );[/JS]
werkt het niet meer. Doet het script niks meer

Hier de html

HTML:
<form method='post' name='javascript'>

<select name="huurprijs" onchange='test(1)' id="huur"><option value="1">1</option><option value="2">2</option><option value="3" >3</option><option value="4">4</option></select>

Huurprijs 2:&euro;<input type='text' name='huurprijs1' onchange='test(1)' id="huur2" >
<div id="uitkomst">50</div><br />
<div id="uitkomst1">45</div><br />
<div id="uitkomst0">50</div>
</form>
 
Okay, ik denk dat je mn punt niet helemaal vat. Dit is het idee: document.javascript is verkeerd. In ieder geval werkt het niet in Firefox, dus het zal wel een IE-only iets zijn (?).

Nu, om dit[JS]var aantal = ( document.javascript.('huurprijs'+i).value - 0 );[/JS]te laten werken, kan je[JS]var aantal = document.getElementById('huurprijs'+i).value;[/JS]gebruiken, MITS je je html wel zo maakt: van
HTML:
<input type='text' name='huurprijs1' onchange='test(1)' id="huur2" >
naar
HTML:
<input type='text' id='huurprijs1' onchange='test(1)' />
(zodat het ID klopt)


:thumb:
 
Hey thanx dit werkt en doet wat ik wil.

ps

Okay, ik denk dat je mn punt niet helemaal vat. Dit is het idee: document.javascript is verkeerd. In ieder geval werkt het niet in Firefox, dus het zal wel een IE-only iets zijn (?).

dat . javascript slaat op het formulier dat javascript heet dus is niet een functie ofzo en werkt dus gewoon in ff :D

Groetjes
 
dat . javascript slaat op het formulier dat javascript heet
oooooooooooooooooooooooooooh! :D Nou, dan is het dus niet fout. Maar of je een formulier zo'n 'onhandige' naam moet geven is natuurlijk een 2e. My bad ;)



:thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan