10

こんにちは私は単純なhtml構造を持っています

<h1>Title text <span>inner text</span></h1>

私が欲しいのは、テキストを邪魔することなく、テキスト(タイトルテキスト)だけを置き換えること<span>です。これは可能ですか?

他のdom要素を追加したくないので、その構造を維持したいと思います。もちろんこれをやっています。

$("h1").text("new text");

spanしかし、あなたは推測することができます...すべての内部テキストとテキスト要素も置き換えます。

考えられる解決策:スパンのテキストを変数にコピーして、それを新しい<h1>テキストと連結することを考えていましたが、それを行うためのより良いクリーンな方法が存在する可能性があると思います。

4

7 に答える 7

11

jQuery.contents()を使用すると、次のnodeValueようなものを置き換えることができます。

$("h1").contents()[0].nodeValue = "new text ";

jQuery.contents()テキストノードを置き換えるために使用するデモ


于 2013-03-25T19:39:24.310 に答える
4
$("h1").each(function() {
    var textNode = document.createTextNode("new text");
    this.replaceChild(textNode, this.firstChild);
});

デモ:http: //jsfiddle.net/FvbJa/

于 2013-03-25T19:38:13.430 に答える
2

別の短いjQueryソリューション:

$("h1").contents().first().replaceWith("new text");

デモ:http: //jsfiddle.net/FvbJa/1/

于 2013-03-25T20:22:19.270 に答える
2

これはjqueryなしで機能します:

$title = documento.querySelector('your h1 element');
$title.firstChild.nodeValue = 'New Title text';
于 2018-08-12T06:56:36.027 に答える
0

私はこの質問が役に立つかもしれないと思いました。

これを行うことで子要素を取得できます。

var h1_elt = document.getElementById(h1_elt_id);
var span = h1_elt.getElementsByTagName("span");

次に、スパンinnerHTMLをh1要素innerHTMLの一部として使用できます。つまり、h1_elt.innerHTML = "new text" + span.innerHTML + ""

HTMLについて変更する必要があるのは、h1要素にid属性を指定し、h1_elt_idの代わりにそれを使用することだけです。

于 2013-03-25T19:45:47.663 に答える
0

以下が機能します。

var h1 = document.getElementById("h1"),
    children = Array.prototype.slice.call(h1.children),
    newText = document.createTextNode("Hello. ");

h1.innerHTML = "";
h1.appendChild(newText);

while(children) {
    h1.appendChild(children.shift());
}

http://jsfiddle.net/TFYmv/

基本的には、特定の要素のすべての子の写真を撮り、要素を完全に変更してから、撮影した写真を使用して前のすべての子を親要素に再追加します。

于 2013-03-25T19:47:33.377 に答える
-1
const ChgBtn = document.querySelector('#change-title')
const title = document.querySelector('#page-title')

ChgBtn.addEventListener('click', (event) => {
  if (title.innerHTML === 'job') {
    title.innerHTML = 'better job'
    event.target.innerHTML = 'Change title back'
  }
  else if (title.innerHTML === 'better job') {
    title.innerHTML = 'job'
    event.target.innerHTML = 'Change Title'
  }
  else {
    console.error('Wrong')
  }
})
于 2018-01-26T21:01:21.660 に答える