Привет всем, мне нужно получить сумму чисел, но я получил только строку, поэтому мне нужно получить числа. Как мне поменять его на номер? Я пробовал parseInt и Number, но ничего не помогает
var td = document.getElementsByTagName("td");
var input = document.getElementById("myInput");
for ( var i = 0; i < td.length; i++ ){
td[i].addEventListener("click", activeTd);
}
function activeTd(event){
var result = 0;
for ( var i = 0; i < td.length; i++ ){
event.target.style.color = "red";
}
var btn = document.getElementById("myBtn");
btn.addEventListener("click", activeAll);
function activeAll(){
if ( event.target.style.color = "red" ){
result = Number(event.target.innerHTML);
input.value += result;
}
}
}<table>
<tr>
<td>1</td>
<td>11</td>
<td>8</td>
</tr>
<tr>
<td>54</td>
<td>13</td>
<td>22</td>
</tr>
<tr>
<td>15</td>
<td>23</td>
<td>6</td>
</tr>
</table>
<input type = "text" id = "myInput">
<button id = "myBtn">Start</button> 


![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


value элемента input всегда является строкой, поэтому, когда вы добавляете эту строку к другой переменной, даже если эта другая переменная является number, результатом является сокатенация, а не сложение. Сначала наберите input.value на номер:
var td = document.getElementsByTagName("td");
var input = document.getElementById("myInput");
for (var i = 0; i < td.length; i++) {
td[i].addEventListener("click", activeTd);
}
function activeTd(event) {
var result = 0;
for (var i = 0; i < td.length; i++) {
event.target.style.color = "red";
}
var btn = document.getElementById("myBtn");
btn.addEventListener("click", activeAll);
function activeAll() {
if (event.target.style.color = "red") {
input.value = Number(event.target.textContent) + Number(input.value);
}
}
}<table>
<tr>
<td>1</td>
<td>11</td>
<td>8</td>
</tr>
<tr>
<td>54</td>
<td>13</td>
<td>22</td>
</tr>
<tr>
<td>15</td>
<td>23</td>
<td>6</td>
</tr>
</table>
<input type = "text" id = "myInput" value = "0">
<button id = "myBtn">Start</button>Ваш целевой input.value - это строка, любое добавление возвращает строку, даже если значение является числом. Затем вам нужно взять значение input.value, преобразовать его в число, добавить значение как число и присвоить его обратно.
input.value = +input.value + +event.target.innerHTML
var td = document.getElementsByTagName("td");
var input = document.getElementById("myInput");
for (var i = 0; i < td.length; i++) {
td[i].addEventListener("click", activeTd);
}
function activeTd(event) {
var result = 0;
for (var i = 0; i < td.length; i++) {
event.target.style.color = "red";
}
var btn = document.getElementById("myBtn");
btn.addEventListener("click", activeAll);
function activeAll() {
if (event.target.style.color = "red") {
input.value = +input.value + +event.target.innerHTML
}
}
}<table><tr><td>1</td><td>11</td><td>8</td></tr><tr><td>54</td><td>13</td><td>22</td></tr><tr><td>15</td><td>23</td><td>6</td></tr></table>
<input type = "text" id = "myInput">
<button id = "myBtn">Start</button>
просто подсказка, вы можете предотвратить ввод строк (которые дают
NaN, а не число) при вводе с помощью атрибутаdisabled.