0

すべての見出しが h2 タグを使用している Web ページで作業しています。h1を使用するように最初の見出しを変換したいと思います。

これは私が使用しているコードです:

<script type="text/javascript">
var myHeader = $('h2:first');
var myHeaderHTML = myHeader.html();

alert("myHeader: " + myHeader);
alert("myHeaderHTML: " + myHeaderHTML);

$(document).ready(function() {
$(myHeader).replaceWith("<h1>" + $(myHeaderHTML) + "</h1>");
});
</script>

ただし、ページをリロードすると、h1 タグで囲まれた [object Object] エラーが表示されます。上記のように、変数に含まれる値を確認できるようにコードにいくつかのアラートを追加しました。[object Object] を含むのは myHeader 変数です。myHeaderHTML 変数には、私が期待するものが含まれています。

どうすればこれを修正できますか?

4

4 に答える 4

4

これは間違っています:

"<h1>" + $(myHeaderHTML) + "</h1>"

オブジェクトに文字列を追加すると、オブジェクトが文字列に変換され、"[Object object]"連結が実行されます。

そのはず:

 "<h1>" + myHeaderHTML + "</h1>"
于 2013-03-27T15:57:53.083 に答える
2

jquery を再度呼び出す必要はありません。

$(myHeader).replaceWith("<h1>" + myHeaderHTML + "</h1>");
于 2013-03-27T15:57:32.257 に答える
1

HTML 文字列を$(myHeaderHTML)jQuery オブジェクトでラップしているため、[object Object]他の文字列と連結するとシリアル化されます ( "<h1>")。

使用する

$(document).ready(function() {

    var myHeader = $('h2:first');
    var myHeaderHTML = myHeader.html();

    alert("myHeader: " + myHeader); // alerts [object Object] as well
    alert("myHeaderHTML: " + myHeaderHTML);

    myHeader.replaceWith("<h1>" + myHeaderHTML + "</h1>");
});
于 2013-03-27T15:59:43.930 に答える
0

HTML コンテンツを文字列に入れる必要のない、より安全な方法を次に示します。

<script type="text/javascript">
  $(function(){
    $('h2:first').wrapInner('<h1>').find('h1').unwrap();
  });
</script>
于 2013-03-27T16:35:00.193 に答える