イベント(クリックなど)をトリガーした場合、Jqueryでevent.idを取得できることは知っていますが、単純な関数呼び出しのDOMの場所を取得するにはどうすればよいですか
元 :
<pre id="container2">...
<script>
FunctionCall();
</script>
</pre>
FunctionCall 内から「container2」値を取得したい
イベント(クリックなど)をトリガーした場合、Jqueryでevent.idを取得できることは知っていますが、単純な関数呼び出しのDOMの場所を取得するにはどうすればよいですか
元 :
<pre id="container2">...
<script>
FunctionCall();
</script>
</pre>
FunctionCall 内から「container2」値を取得したい
一般に、スクリプトはどこから起動されたのかを認識していないため、要求したことを実行する一般的な方法はありません。事前に知っているコンテナー div を見つけるか、後で見つけることができる独自の既知のオブジェクトを挿入する必要があります。
あなたの特定の例では、これを行うことができます:
<pre id="container2">...
<script>
var fCntr = fCntr || 1;
document.write('<div id="FunctionCallLocation' + fCntr + '"></div>');
FunctionCall(fCntr++);
</script>
</pre>
次に、スクリプト内から、渡された ID を持つ DOM 要素を見つけることができます。
または、document.write()
関数自体に を配置して、独自の場所をマークすることもできます。
var fCntr = 1;
function FunctionCall() {
var myLoc = "FunctionCallLocation" + fCntr++;
document.write('<div id="' + myLoc + '"></div>');
var myLoc = document.getElementById(myLoc);
}
この正確なコードは、 FunctionCall がページの読み込み時にのみ呼び出された場合にのみ機能するため、document.write()
必要に応じて機能します。
script 要素に id または class を追加してみてください。だから、このようなもの:
<pre id='container2'>
<script id='location'>
(function FunctionCall() {
var container2 = document.getElementById('location').parentNode;
container2.appendChild(document.createElement('p'));
}())
</script>
</pre>