52

内部にオブジェクトを含む配列があります。いくつかのオブジェクトには、文字列にアンダースコアが含まれています。

例:

{"name": "My_name"}

しかし、私は複数の場所でname関数を呼び出しています。そのような場所の1つは、アンダースコアが必要な画像タグ内にあります。JavaScriptを使用して、名前が含まれる特定のdivを選択し、アンダースコアをスペースに置き換えます。

例:

<div>
 <div class="name">
  My_name
 </div>
 <img src="My_name.jpg"/>
</div>

での代わりにdiv.name言いたいです。My nameMy_name

4

2 に答える 2

121

文字列内のすべてのアンダースコアを次のようなスペースに置き換えることができます。

str.replace(/_/g, ' ');

したがって、コンテンツを挿入する前にそれを実行してください。後で置換を実行する必要がある場合は、次を使用してループしeachます。

$('.name').each(function () {
    this.textContent = this.textContent.replace(/_/g, ' ');
});
于 2012-08-04T17:26:54.107 に答える
12

ES2021では、気の利いたreplaceAll()関数が導入されました。これは、次のように記述できることを意味します。

str.replaceAll('_', ' ')

複数の要素を実行したい場合は、それらをループしてforEach()を使用します。

const elements = document.querySelectorAll('.name')   
elements.forEach(e => e.innerText = e.innerText.replaceAll('_', ' '))
于 2020-09-16T15:08:08.533 に答える