user2045937
user2045937

Reputation: 197

Get id as a number in javascript..?

A simple question..

var x = document.getElementById('xNum');
var y = document.getElementById('xNum');
var result = x * y;

document.write(result);

and

<div id="xNum">20</div>
<div id="yNum">50</div>

It displays 20 and 50. why not calculating 20 * 50? Why does it get as a integer or how can I get numbers in an div?

Thanx!

I don't get any result with that:

var x = document.getElementById('xNum').innerHTML;
var y = document.getElementById('xNum').innerHTML;
var result = parseInt(x) * parseInt(y);

document.write(result);

Upvotes: 2

Views: 6810

Answers (8)

Futuregeek
Futuregeek

Reputation: 1980

You have to use parseInt() function in javascript for parsing a string to return an integer.

Your code should be like this :

   var x = document.getElementById('xNum');
   var y = document.getElementById('yNum');
   var result = parseInt(x.innerHTML) * parseInt(y.innerHTML); 

   document.write(result);

Upvotes: 0

Ja͢ck
Ja͢ck

Reputation: 173552

By now the possible ways would have been exhausted, but here's an example with textContent:

var x = document.getElementById('xNum'),
y = document.getElementById('yNum'),
toIntNum = function(element) {
    return parseInt(element.textContent || element.innerText || 0, 10);
},
result;

result = toIntNum(x) * toIntNum(y);

Demo

Upvotes: 1

dfsq
dfsq

Reputation: 193261

The value you are getting is a string, so in order to use it as a number you should cast it to the integer (or float):

var x = +document.getElementById('xNum').innerHTML;
var y = +document.getElementById('xNum').innerHTML;
var result = x * y;

I used unary + operator, there are another methods like parseInt, Number constructor, etc.

Upvotes: 2

Blender
Blender

Reputation: 298146

Parse them into integers:

var x = document.getElementById('xNum');
var y = document.getElementById('yNum');

var result = parseInt(x.innerHTML, 10) * parseInt(y.innerHTML, 10);

Upvotes: 3

Ajay2707
Ajay2707

Reputation: 5798

you must cast as int so calculation done. By default the value consider as string .

  var x = document.getByElementId('xNum');
var y = document.getByElementId('xNum');
var result = parseInt(x) * parseInt(y);  //use parseInt or parseDouble 

document.write(result);

and

<div id="xNum">20</div> <div id="yNum">50</div>

it give 1000

Upvotes: 0

Pranav
Pranav

Reputation: 8871

it should be

var x = document.getElementById('xNum').innerHTML;
var y = document.getElementById('yNum').innerHTML;
var result = x * y;

document.write(result);

Upvotes: 5

Benjamin Gruenbaum
Benjamin Gruenbaum

Reputation: 276296

Use parseInt and process it on their HTML,

var result = parseInt(x.innerHTML) * parseInt(y.innerHTML)

If you don't need to support browsers priot to IE9, you should use textContent instead of innerHTML.

If your numbers might be floats you should check out parseFloat instead

If you need to be able to handle numbers like 012 you should specify the radix parameter as they might be interpreted the wrong way by parseInt. In this case you should use parseInt(x.innerHTML,10)

Upvotes: 8

user2156884
user2156884

Reputation:

Js:

var x = document.getByElementId('xNum').innerHTML;
var y = document.getByElementId('xNum').innerHTML;
var result = parseInt(x) * parseInt(y);

document.write(result);

Upvotes: 0

Related Questions