![]() |
![]() |
![]()
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( ![]() ![]() 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. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 195 Pomógł: 109 Dołączył: 3.11.2011 Ostrzeżenie: (10%) ![]() ![]() |
|
|
|
![]()
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/ |
|
|
![]()
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
![]() 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 |
|
|
![]()
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 ![]() ![]() -------------------- jQuery, JavaScript i CSS - porady, tutoriale
highlab.pl - blog o technologiach, nauce i programowaniu |
|
|
![]()
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ą ![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 15:43 |