1

オブジェクトを取得する方法はありますか、またはスクリプト内のIDはjQueryなどを使用していますか?

例えば:

<div id="div1">
  <script type="text/javascript">
     var obj = ?? // this should be the "div1" div
  </script>
</div>

この例では、objは「div1」(またはオブジェクト自体)と等しくなければなりません。

もう1つ:

<p id="paragraph_7">
  <script type="text/javascript">
     var obj = ?? // this should be the "paragraph_7" p
  </script>
</p>

この例では、objは「paragraph_7」(またはオブジェクト自体)と等しくなければなりません。

スクリプトタグに「id」を付けて、その親を取得すると、機能するはずですが、別の方法はありますか?いつも<script>IDを知ることができるとは限りません。

前もって感謝します。

4

2 に答える 2

2

スクリプトは順番に実行されるため、現在実行されているスクリプトタグは、それまでは常にページの最後のスクリプトタグになります。したがって、スクリプトタグを取得するには、次のようにします。

var scripts = document.getElementsByTagName( 'script' );
var thisScriptTag = scripts[ scripts.length - 1 ];

次に、これを使用できます。

var obj = thisScriptTag.parentNode;


これの一部はhttps://stackoverflow.com/a/3326554/1188942からです

于 2012-08-09T07:20:25.480 に答える
1

このコードを挿入すると、機能します。基本的に、スクリプトを照会するまでに、現在実行中のスクリプトは、<scripts>現在DOMにあるリストの最後になります。

<script>
    //protect from the global scope using an immediate function
    (function() {

        //just being verbose
        var scripts, scriptIndex, thisScript, parent;

        scripts = document.getElementsByTagName('script');
        scriptIndex = scripts.length - 1;
        thisScript = scripts[scriptIndex];
        parent = thisScript.parentNode.id;

        //proof that we got the parent is to print the id
        document.write(parent);

    }());​

</script>
于 2012-08-09T07:21:28.880 に答える