Вместо конкатенации я хочу добавить плюс 1, почему он не работает?

var name = $(".column_nr_matching:last").attr("name");
// это дает мне col_nr359 а тут добавляю плюс 1

var added_one = name + (+1);

Когда я смотрю с консоли, я получаю следующее:

col_nr3591

Мне нужно, чтобы это было

col_nr360

Вопросы не ясны

Hussein Salman 12.03.2018 20:18

Что происходит, когда вы пытаетесь добавить число к строке? Он соединяется. Вам нужно найти решение, чтобы сначала получить число из вашей строки, добавить к этому числу, а затем вернуться к строке.

user820304 12.03.2018 20:18

Что ж, col_nr359 - это строка, а не число, поэтому добавление к нему 1 заставляет Javascript преобразовывать этот 1 в символ и добавлять его как строку. Даже если бы у вас был '123' + 2, вы бы получили '1232', поскольку '123' - это строка. Вам нужно будет разделить число, добавить 1 как число, добавленное к числу, и восстановить строку.

lurker 12.03.2018 20:19

Я хочу добавить +1, но он не добавляет, а просто ставит цифру 1 в конец вместо увеличения

LOLA 12.03.2018 20:19

Да, это правильно. И двое из нас объяснили вам причину, по которой это происходит. Вы понимаете причину? Как я уже сказал, вам нужно провести некоторое исследование утилит обработки строк javascript, выделить число из строки как отдельное число (не подстроку), добавить к нему 1 как число, а затем восстановить строку.

lurker 12.03.2018 20:20

Я думаю, вам следует предоставить больше кода

mejiajuanbta 12.03.2018 20:25
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
6
73
4

Ответы 4

Вы смешиваете типы данных. col_nrxxx - это строка, которая всегда будет единицей. Вам нужно вырезать 359, затем проанализировать его до int, затем добавить +1, а затем объединить его обратно в строку.

Хороший комментарий; плохой ответ. Правильный ответ объяснил бы, как делать то, что вы описали.

j08691 12.03.2018 20:20

Поскольку col_nr359 - это строка, и, используя +, вы присоединяете 1 к этой строке. Вам нужно сделать что-то вроде этого:

document.getElementById('increment').onclick = function (){
  //get the innertext from the span
  var text = document.getElementById('colid').innerText;
  //replace the 'col_nr' text with empty string to get the number
  var nr = text.replace('col_nr','');
  //parses the number to int and sums 1, then concatenate back
  var new_id = 'col_nr' + (parseInt(nr) + 1);
  //set the new text to the span
  document.getElementById('colid').innerText = new_id;
  
}
<span id = "colid">col_nr359</span>
<br>
<button id = "increment" > Increment </button>

Этот ответ тоже может быть полезен: stackoverflow.com/a/17106701/4802649

Phiter 12.03.2018 20:24

col_nr359 - это String, даже JavaScript не может интерпретировать его как number, так как впереди есть символы.

Что вам нужно сделать, так это разделить строку так, чтобы у вас были col_nr и 359, затем добавить 1 к 359, а затем снова объединить.

Как уже упоминалось, name - это строка, а не число. Вам нужно просто получить числовую часть, чтобы вы могли добавить к ней единицу. Один из возможных способов сделать это - заменить строку регулярного выражения, где вы используете группу захвата, чтобы получить числовую часть и заменить ее этим числом плюс один. Пример:

const name = "col_nr359";
const added_one = name.replace(/(\d*)$/, m => String(+m + 1))
console.info(added_one)

Другие вопросы по теме