2012-02-09 3 views
9

<script>の要素がどのようになっているのか、どうすればわかりますか?私は、より現代的なものにこれを変更する場合の例として
、のは、このJavascriptの現在の要素は何ですか?

<div> 
<script type="text/javascript"> 
    var time = new Date(), hrs = time.getHours(), min = time.getMinutes(); 
    document.write('It is '+hrs+":"+(min<10?'0':'')+min); 
</script> 
</div> 

てみましょう次に、どのように私たちは何をしている要素を見つけることができますか?
だから私は

$(thisdiv).html('It is '+hrs+":"+(min<10?'0':'')+min); 

jQueryの

で、たとえば、書きたいけど、どのように私は thisdivを得るのですか?
はい、私はそれにIDを付けることができますが、私は必要ではないと感じています。ブラウザは私たちがどこにいるかを知っています。それ以外の場合は、document.writeも実行できませんでした!

だから、提案はありますか?私は検索しましたが、それを見つけることができませんでした。それは私が明らかに見落としているので、簡単ですか?

答えて

20

スクリプトの試行は、ドキュメント内の出現順に実行されます。スクリプトタグの内容は出会いの度に評価されるため、最後の<script>要素は常に現在のものです。

コード:

<div> 
    <script> 
    var scriptTag = document.getElementsByTagName('script'); 
    scriptTag = scriptTag[scriptTag.length - 1]; 

    var parent = scriptTag.parentNode; 
    </script> 
</div> 
+0

+1、私はそれがかなり基本的なコンセプトを見過ごしたとは思えない:( – danjah

+0

+1、エレガントな解決策 – osahyoun

+0

ありがとう!最新のスクリプトは、実行中のリストの最後であったので、これは私が探していた解決策でした。プラスとして、私がテストしたすべてのブラウザ、つまりNetscape 6でも動作します。 。) –

0
$('script#some_id').parent().html('blah blah'); 
+2

*はい、私は、私はそれにIDを置くことができます知っているが、私はその気持ちを持っています* –

+0

Mr ListerはスクリプトにIDを与えていないと言いましたが、以前はそうでしたので、私は多くのsc私が思いつくことができる最高のものは、他のスクリプト内のアクセスを識別するためのスクリプトブロック内に一意のランダムなvarを設定することでした(http://stackoverflow.com/questions/3057628/how-to-self-identify-of-a-scripts-tag-in-the-dom)を参照してください。だから、おそらくIDは行く方法です...熱心にあなたのQを見ています。 – danjah

0

この

<div id="mydiv"> 
<script type="text/javascript"> 
    var time = new Date(), hrs = time.getHours(), min = time.getMinutes(); 
    document.getElementById('mydiv').innerHTML = 'It is '+hrs+":"+(min<10?'0':'')+min; 
</script> 
</div> 
+1

*はい、私はそれにIDを置くことができますが、私は必要ではないという気持ちがあります。* –

+0

ああ申し訳ありませんでしたその声明を得た、私はロブWがあなたの解決策にかなり近いと思う。 –

1

のFirefox:

document.currentScript.parentElement 

クローム:

document.scripts.length 
関連する問題