[js] dzialania na liczbach

HTML to podstawy w dziedzinie tworzenia stron WWW, Style CSS warto opanować, bowiem za ich pomocą można dostosować odpowiednio wygląd swojej witryny WWW. Zagłębiamy się dalej i udostępniamy w tym forum możliwość zadawania pytań o JavaScript.
ODPOWIEDZ
tatu
Nowy
Nowy
Posty: 89
Rejestracja: śr lut 09, 2005 1:58 pm

[js] dzialania na liczbach

Post autor: tatu »

mam trzy linie skryptu:

Kod: Zaznacz cały

var wynik = document.getElementById("result").value * 0.1;
var suma = document.getElementById("result").value + wynik;
document.write(suma);
kiedy próbuję wywołać sumę poleceniem document.write(suma);, zamiast dodać obie wartości, wyświetla mi je obok siebie w jednej linii! czemu? chce, żeby wyliczało mi procent i dodawało go do wartości początkowej.
123456
Zaczyna działać
Zaczyna działać
Posty: 514
Rejestracja: sob paź 28, 2006 1:19 pm

Re: [js] dzialania na liczbach

Post autor: 123456 »

Kod: Zaznacz cały

tmp_val = document.getElementById("result").value;
wynik =  (tmp_val * 0.1) + (tmp_val*1);
document.write(wynik); 
atom
Nowy
Nowy
Posty: 145
Rejestracja: wt gru 20, 2005 1:55 pm
Kontakt:

Re: [js] dzialania na liczbach

Post autor: atom »

To jest skutek bałaganu wprowadzanego przez języki które nie wymuszają deklaracji typów zmiennych.

Możesz posiłkować się też funkcją parseFloat (żeby uniknąć zbędnych przemnożeń z powyższego rozwiązania).
123456
Zaczyna działać
Zaczyna działać
Posty: 514
Rejestracja: sob paź 28, 2006 1:19 pm

Re: [js] dzialania na liczbach

Post autor: 123456 »

żeby uniknąć zbędnych przemnożeń z powyższego rozwiązania

Kod: Zaznacz cały

tmp_val*1
No faktycznie... pół godziny liczenia.
tatu
Nowy
Nowy
Posty: 89
Rejestracja: śr lut 09, 2005 1:58 pm

Re: [js] dzialania na liczbach

Post autor: tatu »

dzieki dziala, a mam jeszcze pytanie, jak to zrobic, zeby wynik pojawial mi sie od razu bez przeladowywania strony (ajaxem?)?
123456
Zaczyna działać
Zaczyna działać
Posty: 514
Rejestracja: sob paź 28, 2006 1:19 pm

Re: [js] dzialania na liczbach

Post autor: 123456 »

jak to zrobic, zeby wynik pojawial mi sie od razu bez przeladowywania strony (ajaxem?)?
Zamiast document.write() zwracaj wynik do jakiegoś pola input lub do div'a przez innerHTML.
tatu
Nowy
Nowy
Posty: 89
Rejestracja: śr lut 09, 2005 1:58 pm

Re: [js] dzialania na liczbach

Post autor: tatu »

ok do tej pory mialem tak:

Kod: Zaznacz cały

function funkcja() {
	var tmp_val = document.getElementById("result").value;
	var wynik =  (tmp_val * 0.15) + (tmp_val*1);
	var procent = tmp_val * 0.15;
	document.write("procent: ");
	document.write(procent);
	document.write("<br />suma z procentem: ");
	document.write(wynik);
	document.write("<br />suma bez procentu: ");
	document.write(tmp_val); 
	document.write("<br /><a href=\"javascript:history.go(-1)\">cofnij</a>");
	}
ktore wywolywalem w html za posrednictwem submita, ktory przeniosil na kolejna podstrone:

Kod: Zaznacz cały

<input type="button" value="procent" onClick="funkcja()">
probowalem to zastapic innerHTML, ale prawde mowiac nie wiem zupelnie z czym to sie je:

Kod: Zaznacz cały

function funkcja() {
	var tmp_val = document.getElementById("result").value;
	var wynik =  (tmp_val * 0.15) + (tmp_val*1);
	var procent= tmp_val * 0.15;
	document.innerHTML(procent);
	document.innerHTML(wynik);
	document.innerHTML(tmp_val); 
	//document.write("<br /><a href=\"javascript:history.go(-1)\">cofnij</a>");
	}
plus submit ladujacy do inputow:

Kod: Zaznacz cały

<input type="button" value="procent" onClick="funkcja(document.innerHTML('procent').value,document.document.innerHTML('wynik').value)" />
oczywiscie nie dziala
p.s. jest jakas specyfikacja js, tak w3c ma css i xhtml albo php.net? ecmascript?
123456
Zaczyna działać
Zaczyna działać
Posty: 514
Rejestracja: sob paź 28, 2006 1:19 pm

Re: [js] dzialania na liczbach

Post autor: 123456 »

Nie wiem czy innerHTML jest Ci potrzebny bo może wystarczy przypisywać wartość do jakiegoś pola tekstowego ale popatrz na przykład:

Kod: Zaznacz cały

<html>
<head>
<script>
function licz(){
   var tmp_val = document.getElementById("result").value;
   var wynik =  (tmp_val * 0.15) + (tmp_val*1);
   var procent= tmp_val * 0.15;

   cnt_html = "Procent: "+procent+"<br />";
   cnt_html+= "Suma z procentem: "+wynik+"<br />";
   cnt_html+= "Suma bez procentu: "+tmp_val;

   inner_div('d_return',cnt_html);
}
// -------------------------------------------------------------
function inner_div(el,cnt){
	obj = document.getElementById(el);
	obj.innerHTML = cnt;
}
</script>
</head>
<body>
   <input type="text" id="result" value="0"/>
   <input type="button" name="b_licz" onclick="licz();" value="Wywolaj funkcje"/>
   <div id="d_return" style="border: 1px solid #444;"></div>
</body>
</html>
ODPOWIEDZ