1

まず、この質問を読んでくれてありがとう。Stack Overflow には素晴らしいコミュニティがあります :)

そのページの h1 要素に含まれるテキストに基づいて、ページのタイトル タグを変更する必要があります。

いろいろと調べていたら、「document.title」Javascript 関数が見つかりました。「Category-H1」のクラスを持つh1要素からテキストを取得しようとして、私はそれをいじっていました。

<script type="text/javascript">
    document.title = document.getElementsByClassName("Category-H1");
</script>

ただし、ページタイトルを「[object HTMLCollection]」に設定しているだけで、これは私が理解しているようにnull値です。JSはこれを行うのが最善でしたか? コードがジャックされていることはわかっていますが、ヒントはありますか?

前もって感謝します!- アレックス

編集

コード行が文字列ではなくコレクション オブジェクトを返すという通知を受けました。次のコード例が指摘されました。

setTimeout(function () { document.title = "iFinity User Profile - " + document.getElementById("test").outerText; }, 1000); 

ただし、このコードは「iFinity User Profile - undefined」というページ タイトルを生成します。そのページの h1 要素を「test」の id に設定しています。

4

5 に答える 5

3

あなたはほとんどそこにいます。

[object HTMLCollection]NULL値ではありません - それはHTML要素のコレクションの文字列表現です。最初のものを選択してから、そこから内側のHTMLを取得します。

document.getElementsByClassName("Category-H1")[0].innerHTML

また、ドキュメントがロードされた後にこれを行うようにしてください。ドキュメントの最後にスクリプトを追加するかonload、本文のイベントでスクリプトを実行することで、これを行うことができます。

于 2012-10-26T21:04:54.383 に答える
2

これはうまくいくはずです:

document.title = document.getElementsByClassName("Category-H1")[0].innerHTML;

このgetElementsByClassName()関数は要素のコレクション ( を返す[object HTMLCollection]ので、そこから要素を取得する必要があります。最初の要素を想定しています。

于 2012-10-26T21:01:43.893 に答える
0

これは非常に近いですが、とにかく Firefox で作業していて、 getElementsByTagName("H1") を使用すると、認識したとおりの配列が得られることがわかりました。ただし、次を使用するとうまく機能します。

<script type="text/javascript">
    document.title = document.getElementsByTagName("H1").item(0).innerHTML;
</script>

[0].innerHTML ではなく、要素を取得した後に .item(0).innerHTML が追加されていることに注意してください。

于 2017-01-12T18:11:00.170 に答える
0

より良い解決策は次のとおりです。

<script type="text/javascript">
document.title = document.getElementsByTagName("H1")[0].innerHTML
</script>

これにより、h1 クラスを設定する必要がなくなります。

于 2016-07-21T18:49:23.910 に答える