regex 在innerText中使用JavaScript进行 替换不起作用

3bygqnnd  于 2022-11-26  发布在  Java
关注(0)|答案(4)|浏览(239)

我尝试将多行中 的每个示例替换为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>

我已经使用代码blow成功地将“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;的示例没有被修改。原因可能是什么?

4xrmg8kj

4xrmg8kj1#

&nbsp;在HTML中已经呈现为一个空格,因此没有任何&nbsp;的示例需要替换。如果你想保持它的原样,转义它也可以,允许你用regex replace修改它。正如@barmar提到的,使用innerHTML也可以做到这一点:
第一个

mkshixfv

mkshixfv2#

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

wrrgggsh

wrrgggsh3#

您需要使用innerHTML属性,因为在innerText中,&nbsp;将被替换为char(160)字符。
演示:
第一个

qybjjes1

qybjjes14#

根据@Peter B的回答,我终于明白了为什么我找不到“空格”字符,即使在记事本++中启用了“显示所有字符”!事实上,尽管看起来像一个空格,但它是一个char(160)
下面是如何直接用“适当”的空间替换它:
element.innerText.replaceAll( String.fromCharCode(160) , ' ' )

相关问题