使用JavaScript替换innerText中的内容无效

时间:2019-05-24 09:51:43

标签: javascript html regex dom replace

我正在尝试将 的每个实例替换成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>

我已经使用代码打击成功地使用replace(/a/g, 'e')将“ a”的实例替换为“ 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 :(得分:0)

&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>

答案 1 :(得分:0)

使用innerHTML而不是innerTextinnerText包含呈现的文本,但是实体是HTML标记的一部分。

答案 2 :(得分:-1)

您需要使用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>