У меня есть строка, которая динамически создается плагином, и я изменил формат даты с помощью регулярного выражения.

Переменная, представляющая новую строку, отображается в консоли с правильным форматированием, но когда я пытаюсь передать ее обратно в innerHTML, ничего не происходит?

Как передать вторую (переформатированную) строку даты обратно в элемент HTML с классом .date-start, чтобы результат изменился?

Спасибо заранее,

Эмили

// remove space in string

var dateStr = document.querySelector(".date-start").innerHTML;

secondDateStr = dateStr.replace(/\sam$/, "am");

dateStr.innerHTML = secondDateStr;

console.log(secondDateStr)
<div class="date-start">January 6, 2018 @ 10:00 am</div>
0
The Chewy 12 Дек 2017 в 01:41

1 ответ

Лучший ответ

В опубликованном коде вы назначаете строку (HTMLElement.innerHTML - это тип строки) переменной.

Затем в dateStr.innerHTML происходит автоматическое преобразование строк в JavaScript к экземпляру типа String, поэтому здесь вы добавляете новое свойство к dateStr объекту .

Вместо этого присвойте элемент DOM переменной для начала, при необходимости измените свою строку, а затем присвойте новое значение атрибуту innerHTML элемента.

Вы также должны быть уверены, что селектор возвращает один элемент, в противном случае, если он возвращает коллекцию, которую он делает, когда находит более одного элемента, вы хотите получить конкретный, например document.querySelector(".date-start")[0]

// remove space in string

var dateEl = document.querySelector(".date-start");

secondDateStr = dateEl.innerHTML.replace(/\sam$/, "am");

dateEl.innerHTML = secondDateStr;

console.log(secondDateStr)
<div class="date-start">January 6, 2018 @ 10:00 am</div>
1
marekful 11 Дек 2017 в 22:57