Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z tympem zmiennej
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
enqis
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.
Niktoś
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
skowron-line
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
enqis
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.
shpyo
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.
Divinity
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/
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.