Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z tympem zmiennej
enqis
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 21.05.2012
Skąd: Wrocław/Bydgoszcz

Ostrzeżenie: (0%)
-----


Cześć
Mam bardzo dziwny problem. Mianowicie. Stworzyłem bardzo prosty dokument HTML:
CODE
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="skrypty2.js"></script>
<title>Dokument bez tytułu</title>
</head>
<body>
<input type="text" name="liczba" id="liczba" >
<div id="liczbar"></div>
<input type="text" name="liczba2" id="liczba2" >
<div id="liczba2r"></div>
<div id="rezultat"></div>
</body>
</html>


Do tego plik ze skryptem:
CODE
var c = 0;

function oblicz (pole){
var a = document.getElementById(pole.id).value;
document.getElementById(pole.id+"r").innerHTML = a * 2;
var b = Number(document.getElementById(pole.id+"r").value);
alert("Typ b to: " +typeof(cool.gif +"czyli" +cool.gif
c = c + b;
}
function Init(){
var liczba = document.getElementById("liczba");
liczba.onblur = function() {
oblicz(this);
document.getElementById("rezultat").innerHTML = c;
}
var liczba2 = document.getElementById("liczba2");
liczba2.onblur = function() {
oblicz(this);
document.getElementById("rezultat").innerHTML = c;
}
}
window.onload = Init;

No i tutaj moje pytanie. Dlaczego skoro z funkcji typeof() wyświetla mi się, że a to string to z tej samej funkcji wychodzi że b jest undefined. Problem polega na tym iż chciałbym w divie rezultat wyświetlić sumę liczbar i liczba2r, a pojawia się napis undefined lub NaN. Próbowałem konwertować zawartość tych divów za pomocą Number() i parseInt() ale to nic nie daje.
Dzięki za pomoc.
Go to the top of the page
+Quote Post
Niktoś
post
Post #2





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Spróbuj zmienić w tej linijce:
[JAVASCRIPT] pobierz, plaintext
  1. document.getElementById(pole.id+"r").innerHTML = a * 2;
[JAVASCRIPT] pobierz, plaintext

na
[JAVASCRIPT] pobierz, plaintext
  1. document.getElementById(pole.id+"r").innerHTML =ParseInt(a) * 2;
[JAVASCRIPT] pobierz, plaintext
Go to the top of the page
+Quote Post
skowron-line
post
Post #3





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


Nan - not a number, a że string to dlatego że z pola zawsze stringa wyciąga trzeba konwersje przeprowadzić
jak kolega wyżej napisał parseInt lub parseFloat


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
enqis
post
Post #4





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 21.05.2012
Skąd: Wrocław/Bydgoszcz

Ostrzeżenie: (0%)
-----


Wiem, że NaN to not a number wink.gif. Chodzi o to, że ten komunikat z JS jest sprzeczny. Funkcja alert pokazuje że zmienna jest liczbą, ale jak chcę ją wyświetlić to pisze NaN, czyli coś jest nie tak.
EDIT1:
Kod
function oblicz (pole){

var a = parseInt(document.getElementById(pole.id).value);
alert(typeof(a));
document.getElementById(pole.id+"r").innerHTML = parseInt(a * 2);
var b = parseInt(document.getElementById(pole.id+"r").value);
alert("Typ b to: " +typeof(b) +" czyli " +parseInt(b))
c = parseInt(c) + parseInt(b);
}


W każdym mozliwym miejscu sprawdzałem po kolei i zawsze wyskakuje NaN. Może znacie jakiś inny sposób, aby sczytać wartość z diva i móc ją dalej przetwprzyć ?

EDIT2:
Dobra już znalazłem. Przepraszam za zamieszanie. Zamiast
Kod
document.getElementById(pole.id+"r").value

wystarczy
Kod
document.getElementById(pole.id+"r").innerHTML

Myślałem że innerHTML służy jedynie do wprowadzania zawartości.

Ten post edytował enqis 23.05.2012, 13:39:12
Go to the top of the page
+Quote Post
shpyo
post
Post #5





Grupa: Zarejestrowani
Postów: 574
Pomógł: 2
Dołączył: 13.04.2004
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Bezpieczniej jest używać
Kod
parseInt(liczba, 10)
- wtedy masz pewność, że liczba będzie dziesiętna smile.gif, a nie ósemkowa czy binarna tongue.gif. Pewnie dlatego dostawałeś NaN.


--------------------
Go to the top of the page
+Quote Post
Divinity
post
Post #6





Grupa: Zarejestrowani
Postów: 33
Pomógł: 8
Dołączył: 25.02.2005
Skąd: Częstochowa

Ostrzeżenie: (0%)
-----


Cytat
Chodzi o to, że ten komunikat z JS jest sprzeczny. Funkcja alert pokazuje że zmienna jest liczbą, ale jak chcę ją wyświetlić to pisze NaN, czyli coś jest nie tak.


No właśnie nic nie jest nie tak, ot taki urok JavaScipt, że NaN jest właśnie liczbą smile.gif. Zerknij: http://jsfiddle.net/jBbpA/
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 21:03