Целые числа, добавляемые в виде строк в Javascript

У меня есть два текстовых поля imageWidth и imageHeight ... я хочу получить от них ввод, добавить текущую позицию указателя мыши, а затем сделать кое-что:

x = e.pageX - canvas.offsetLeft;
y = e.pageY - canvas.offsetTop;
var wWidth = document.getElementById('imageWidth').value;  
var wHeight = document.getElementById('imageHeight').value;
var b = x + wWidth;
alert(b);
if(x+wWidth < 800 && y+wHeight < 1560)
{
//some work here
}

поэтому, если пользователь вводит ширину 400, а x возвращает 151 ... значение b будет 151400 ... тогда как я хочу, чтобы оно было 551 для правильной работы цикла ...


person Abdul Jabbar    schedule 10.12.2013    source источник
comment
Посмотрите на функцию parseInt в JavaScript.   -  person tjg184    schedule 10.12.2013
comment
stackoverflow.com/questions/1133770/   -  person tjg184    schedule 10.12.2013
comment
.value возвращает строку. См. Связанный дубликат, чтобы узнать, как преобразовать его в целое число.   -  person Jamiec    schedule 10.12.2013


Ответы (3)


Javascript - это язык с неявной типизацией. Это означает, что вы должны сказать ему, что это за вещи, когда вы хотите заниматься математикой. Ваш код просто говорит ему объединить строки, следовательно, результат, который вы видите.

Попробуй это:

x = e.pageX - canvas.offsetLeft;
y = e.pageY - canvas.offsetTop;
var wWidth = document.getElementById('imageWidth').value;  
var wHeight = document.getElementById('imageHeight').value;
var b = parseInt(x, 10) + parseInt(wWidth, 10);
alert(b);
if(x+wWidth < 800 && y+wHeight < 1560)
{
//some work here
}
person Nick Zimmerman    schedule 10.12.2013

Вам следует ознакомиться с методом parseInt() -> parseInt ( ) на MDN

person cssimsek    schedule 10.12.2013

Это должно работать:

x = e.pageX - canvas.offsetLeft;
y = e.pageY - canvas.offsetTop;
var wWidth = document.getElementById('imageWidth').value;  
var wHeight = document.getElementById('imageHeight').value;
var x1 = parseInt(x, 10) + parseInt(wWidth, 10);
var y1 = parseInt(y, 10) + parseInt(wHeight, 10);
if(x1 < 800 && y1 < 1560)
{
    //some work here
}
person mayabelle    schedule 10.12.2013