Это старый вопрос, но следующее может быть полезно в общих терминах.
+
с двумя значениями: он добавляет числа и объединяет строки. Он предпочитает конкатенацию, поэтому даже выражение, подобное 3+'4'
, будет рассматриваться как конкатенация. '2'*'3'
изменит оба типа на числа, поскольку вы не можете умножить строки. Если один из них несовместим, вы получите NaN
, а не номер. Ваша проблема возникает из-за того, что данные, поступающие из формы, рассматриваются как строка, а +
поэтому будет сцепляться, а не добавлять.
При чтении предположительно числовых данных из формы вы всегда должны проталкивать ее через parseInt()
или parseFloat()
, в зависимости от того, хотите ли вы целое или десятичное число.
Обратите внимание, что ни одна из функций по-настоящему не преобразует строку в число. Вместо этого он будет анализировать строку слева направо, пока она не вернется к недопустимому числовому символу или к концу и не конвертирует принятое. В случае parseFloat
, который включает одну десятичную точку, но не две.
Все, что после действительного числа просто игнорируется. Там, где они терпят неудачу, если строка даже не начинается с числа. Затем вы получите NaN
.
Хорошая техника общего назначения чисел из форм выглядит примерно так:
var data=parseInt(form['data'].value); // or parseFloat
Если вы готовы объединить недопустимую строку в 0, вы можете использовать:
var data=parseInt(form['data'].value) || 0;
Чтобы увеличить размер шрифта при основном использовании:
plot(x, y , cex.main=3)
Взгляните на этот пост, и вы подумаете о размерах шрифта: Построение графика в программном обеспечении R, как увеличить ось значения в большом файле PNG