Использование JavaScript для замены в innerText, не работает - PullRequest
0 голосов
/ 24 мая 2019

Я пытаюсь заменить каждый экземпляр   в количестве строк на w (как в символе 'w'.) Строки следующие:

<li class="list-group-item horaire-list-item">
    Monday,&nbsp;Tuesday,&nbsp;Thursday,&nbsp;Friday :  12:00 to 14:00 et  18:00 to 20:30
</li>
<li class="list-group-item horaire-list-item">
    Wednesday :  12:00 to 14:00 et  16:00 to 20:30
</li>
<li class="list-group-item horaire-list-item">
    Saturday :  12:00 to 20:30
</li>
<li class="list-group-item horaire-list-item">
    Sunday,&nbsp;Holidays :  09:00 to 20:30
</li>

Я уже использовал удар кода для успешной замены экземпляров «a» на «e», используя replace(/a/g, 'e'), поэтому я знаю, что мой код работает.

Мой код выглядит следующим образом:

var laHoraireElements = document.getElementsByClassName('list-group-item horaire-list-item');
    for ( liJ = 0; liJ < laHoraireElements.length; liJ++ ) {
        laHoraireElements[liJ].innerText = laHoraireElements[liJ].innerText.replace(/&nbsp;/g, 'w');
        alert(laHoraireElements[liJ].innerText);
    }

Ожидаемым результатом будет то, что экземпляры &nbsp; будут заменены на 'w', но ни один экземпляр &nbsp; не будет изменен. В чем может быть причина?

Ответы [ 3 ]

0 голосов
/ 24 мая 2019

Используйте innerHTML вместо innerText. innerText содержит отображаемый текст, но сущности являются частью разметки HTML.

0 голосов
/ 24 мая 2019

Вам необходимо использовать свойство innerHTML, потому что в innerText &nbsp; будет заменено символом char(160).

Демо-версия:

var items = document.getElementsByClassName('list-group-item horaire-list-item');

for (var i = 0; i < items[0].innerText.length && i < 20; i++)
{
  console.log(
      i + ": " +
      items[0].innerText.charAt(i) + " | CharCode = " +
      items[0].innerText.charCodeAt(i));
}

for (var liJ = 0; liJ < items.length; liJ++ ) {
    items[liJ].innerHTML = items[liJ].innerHTML.replace(/&nbsp;/g, 'w');
}
<li class="list-group-item horaire-list-item">
    Monday,&nbsp;Tuesday,&nbsp;Thursday,&nbsp;Friday :  12:00 to 14:00 et  18:00 to 20:30
</li>
<li class="list-group-item horaire-list-item">
    Wednesday :  12:00 to 14:00 et  16:00 to 20:30
</li>
<li class="list-group-item horaire-list-item">
    Saturday :  12:00 to 20:30
</li>
<li class="list-group-item horaire-list-item">
    Sunday,&nbsp;Holidays :  09:00 to 20:30
</li>
0 голосов
/ 24 мая 2019

&nbsp; уже отображается как пробел в вашем HTML, поэтому нет никаких экземпляров &nbsp; для замены.Если вы хотите сохранить его как есть, его экранирование будет работать, что позволит вам изменить его с помощью замены регулярного выражения.Как упоминалось @ barmar , использование innerHTML также поможет:

var laHoraireElements = document.getElementsByClassName('list-group-item horaire-list-item');

for (liJ = 0; liJ < laHoraireElements.length; liJ++) {
  laHoraireElements[liJ].innerHTML = laHoraireElements[liJ].innerHTML.replace(/&nbsp;/g, 'w');
}
<li class="list-group-item horaire-list-item">
  Monday,&nbsp;Tuesday,&nbsp;Thursday,&nbsp;Friday : 12:00 to 14:00 et 18:00 to 20:30
</li>
<li class="list-group-item horaire-list-item">
  Wednesday : 12:00 to 14:00 et 16:00 to 20:30
</li>
<li class="list-group-item horaire-list-item">
  Saturday : 12:00 to 20:30
</li>
<li class="list-group-item horaire-list-item">
  Sunday,&nbsp;Holidays : 09:00 to 20:30
</li>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...