0

HTML ラベルのプロパティを設定するmyjs.js機能を備えた外部 JavaScript ファイル (例: ) を使用しています。setval()innerText

PHPページがあり、セクション<lable id="abc"></lable>に含めました。もう 1 つの PHP ファイルのセクションに含まれており、このファイルから呼び出しているため、実行時に最初の PHP ファイルでラベルを設定する必要があります。myjs.js<head>myjs.js<head>setval()innerText

達成することは可能ですか?どんな提案でも大歓迎です。質問が明確になったことを願っています。

ありがとう

4

1 に答える 1

1

myjs.jsインクルードをページの下部</body>(終了タグの直前または直後)に移動するのが理想的です。それはただです:

document.getElementById("abc").innerText = /* ...the text */;

実例| ソース

何らかの理由でインクルードを移動できない場合は、上記のコードを関数に入れることができます。

function updateTheLabel() {
    document.getElementById("abc").innerText = /* ...the text */;
}

...そして、このスクリプトをラベルの直後に置きます:

<label id="abc"></label>
<script>
updateTheLabel();
</script>

実例| ソース

それをしたくない場合 (そして、そのようにスクリプト タグをマークアップに混在させるのは少し見苦しいです)、ページの準備ができたときに発生する何らかのイベントを待つことができます。「javascript dom ready event」を検索すると、これに関する多くの議論と多くの解決策が表示されます。ライブラリjQueryPrototype、またはその他のいずれかを使用している場合、ライブラリに何かがある可能性は高くなります (100% ではありません)。window loadこのイベントは、ページの読み込みプロセスの非常に遅い段階 (すべての外部リソース (画像など) が読み込まれた後) に発生するため、おそらく待機したくないでしょう。

(使用しているライブラリがあれば、それを知らずに上記のライブの例を実行することはできません。ただし、ここでも、多数の「DOM 対応」ソリューションが存在します。)

または、最悪の場合、これを次のように使用してポーリングすることもできますmyjs.js

function updateTheLabel() {
    var elm = document.getElementById("abc");
    if (elm) {
        elm.innerText = /* ...the text */;
    }
    else {
        setTimeout(updateTheLabel, 50);
    }
}
setTimeout(updateTheLabel, 0);

実例| ソース

于 2012-05-11T15:11:25.667 に答える