2012-02-05 6 views
-3

グローバル変数がこの関数で認識されないのはなぜですか?グローバルおよびローカルjavascriptのスコープ

<script type="text/javascript"> 
var id_f = document.getElementById('f'); 

function foo() 
{ 
id_f.innerHTML=("text"); 
} 
</script> 
+0

あなたは間違っています。認識される。 – akonsu

+0

正確には動作しません。 – user1096188

+0

あなたのhtmlコードにはどこに置いてありますか、どのブラウザを使ってテストしていますか? – skyburner

答えて

3

.getElementById()関数が一致する要素がエラーではありませんこれは、見つからない場合null返しますが、あなたのid_f変数がnullであれば、それは.innerHTML性質を持っていないと、それはエラーになります。

ページソースに一致する要素があっても、の後にスクリプトが実行されない限り、が実際に解析されます。したがって、スクリプトはソース内の要素の後ろにある必要があります(たとえば、</body>タグの直前など)。または、onloadまたはdocument.readyタイプのハンドラを追加してそこからコードを実行する必要があります。

(あなたはあなたの関数の先頭にconsole.log(id_f)またはalert(id_f)を追加した場合、あなたは何を得るのですか?)

+0

ありがとうございます。それがまさに問題でした。私はちょうどjavascriptで作業を始めました。 – T110