Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX][JavaScript]Proste obliczenia w formularzu
Forum PHP.pl > Forum > Przedszkole
lordmonkey
witam,
dzisiaj mam coś takiego
  1. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
  4. <script type="text/javascript">
  5. function pro(wellf,skillf){
  6. var wellness = 1 + 2 * (wellf / 100);
  7. var productiv = 0.25 * skillf * 2 * wellness * 2 * 1.5;
  8. document.getElementById('prod').innerHTML = productiv;
  9. }
  10. </script>
  11. </head>
  12.  
  13. <body>
  14. <form action="" method="POST">
  15. <table >
  16. <tr>
  17. <td>
  18. Wellness </td>
  19. <td width=65>
  20. <input type="text" name="well" size="5"/>
  21. </td>
  22. <td >
  23. Skill </td>
  24. <td width=65>
  25. <input type="text" name="skill" size="5"/>
  26. </td>
  27. <td>
  28. Productivity</td>
  29. <td >
  30. <input type="text" name="prod" size="5" />
  31. </td>
  32. <input type="button" value="Calculate" onclick="pro(skill, well)"/></td>
  33. </tr>
  34. </table>
  35. </form>
  36. </body>
  37. </html>


jak należy to zrobić, aby po naciśnięciu przycisku Calculate w "<input type="text" name="prod" size="5" />"pojawil sie wynik z funkcji?
thek
Może zamiast innerHTML użyj value? winksmiley.jpg
lordmonkey
ja narazie się dopiero uczę także jeżeli mógłbyś pokazać trochę kodu jak to zrobić to byłbym wdzięczny, a tak poza tym to będzie to działać bez przeładowania strony?(tak jak normalnie w AJAX'ie ?)
thek
Zamień w funkcji innerHTML na value, czyli z:
document.getElementById('prod').innerHTML = productiv;
na
document.getElementById('prod').value = productiv;
I powinno zadziałać, bo od tego jest JS by działało po stronie klienta.
lordmonkey
zrobiłem jak napisałeś, ale teraz w okienku z id="prod" wpisuje się NaN, więc musi gdzieś być błąd w funkcji, a nie mam pojęcia gdzie tam mogłem popełnić błąd. :/

EDIT:
dobra doszedłem do tego ale zmieniłem z
Kod
    function pro(wellf,skillf){
        var wellness = 1 + 2 * (wellf / 100);
        var productiv = 0.25 * skillf * 2 * wellness * 2 * 1.5;
        document.getElementById('prod').innerHTML = productiv;
        }


na
Kod
    function pro(){
        var wellness = 1 + 2 * ( document.getElementById('well').value / 100);
        var productiv = 0.25 *  document.getElementById('skill').value * 2 * wellness * 2 * 1.5;
        document.getElementById('prod').value = productiv;
        }


czy dałoby się zrobić tak jak myślałem na początku zeby przekazywać wartości z formularz jako argumenty zamiast czegoś takiego?
thek
Da się to zrobić na przynajmniej 2 sposoby. Albo zmieniasz wywołanie funkcji, albo funkcję. To co zrobiłeś to 2 wariant. Wariant pierwszy to zamiana:
  1. <input type="button" value="Calculate" onclick="pro(skill, well)"/></td>
na
  1. <input type="button" value="Calculate" onclick="pro(document.getElementById('skill').value, document.getElementById('well').value )"/></td>

W tym przypadku podanym przeze mnie jawnie przekazujesz wartości, więc skrypt zna je i może przetwarzać. Możesz jeszcze ciut inaczej zrobić jako minimalny mix obu wariantów. Przekazujesz jako parametry same document.getElementbyId('tutaj_id') a w funkcji posługujesz się wywołaniem wellf.value choćby. To więc kwestia wygody tak naprawdę.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.