グローバル変数の定義について教えてください。
getElementByIdを、グローバル変数で使用することはできないのでしょうか?
【グローバル変数(整数)】の場合
-------------------------------------------------
//グローバルで整数を定義
var a = 10;
function test(){
alert(a.value);
}
結果:「10」が表示される。
-------------------------------------------------
【グローバル変数(getElementByIdを使用)の場合】
-------------------------------------------------
//グローバルでgetElementByIdで取得したオブジェクトを定義
var a = document.getElementById("objname");
function test(){
alert(a.value);
}
結果:「null」 が表示される。
※a = document.getElementById("objname"); でも同様。
-------------------------------------------------
【ローカル変数(getElementByIdを使用)の場合】
-------------------------------------------------
function test(){
//ローカルでgetElementByIdで取得したオブジェクトを定義
var a = document.getElementById("objname");
alert(a.value);
}
結果:「画面入力値」 が表示される。
-------------------------------------------------
このように
getElementByIdで取得したオブジェクトを、
グローバル変数として扱った場合、nullとなるので困っています。
getElementByIdで取得したオブジェクトを、
グローバル変数として扱う良い方法はないでしょうか?
【環境】
OS:WindowsXP Pro
使用JavaScript:外部ファイルのjavaScript
No.2ベストアンサー
- 回答日時:
受取変数がグローバルかどうかが問題では無くて、getElementById の実行が早すぎるのが原因でうまくいかないのは無いでしょうか。
つまり、その ID のタグがまだ誕生していないタイミングで getElementById を発行しても null で当然という訳です。例えば、以下にすればどうでしょう?
【グローバル変数(getElementByIdを使用)の場合】
-------------------------------------------------
// グローバル変数の定義
var a;
function onLoad() { // BODYタグの onload で実行される関数
//グローバル変数に getElementById で取得したオブジェクトを代入
a = document.getElementById("objname");
}
function test(){
alert(a.value);
}
ご回答ありがとうございます。
ご指南いただいた方法で試してみたところ、
正常に取得できました。とても助かります。
【前回の状態】
1.Bodyの内容が読み込まれていない(つまり、オブジェクトが誕生していない)状態がある。
2.getElementById で「Body内容のオブジェクトの取得指示を出す」
3.Bodyが生成されていない状態で取得指示を出しているため、nullを返した。
【対応後の状態】
1.ページがロードされた後(onLoad)後に「変数宣言する」に設定。
2.getElementById で「Body内容のオブジェクトの取得指示を出す」
3.ページがロードされた(=オブジェクトが存在している状態)でgetElementById をしようしたため、正常に取得が完了。
No.3
- 回答日時:
ほぼ#2と同じですが、window.onloadを使うのがスマート
<script>
var a=Object();
window.onload=function(){
a = document.getElementById("objname");
test();
}
function test(){
alert(a.value);
}
</script>
<input type="text" value="xxx" id="objname">
ご回答ありがとうございます。
ご指南いただきました、
window.onloadを実装させていただきました。
こういう方法があるの知らなかったもので、
とても参考になりました。
どうもありがとうございました。
No.1
- 回答日時:
スクリプトを、うしろにおく!(</body>のちょくぜん)
var a = document.getElementById("objname");
が<head>~</head>ないにあると、それがじっこうされたとき
まだそのようそが、そんざいしてないから
どうも、ありがとうございます。
ちょっと試してみたのですが、上手くいきませんでした。汗
(指定の仕方が悪かったのかもしれませんが(--;)
たしかに無いものに対して「取得しにいこうとしていた」のですから、
無い(null)のは当然だったということですね(--;
参考なります。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript javaScriptで画面に値を入れるには 1 2022/08/14 12:27
- その他(プログラミング・Web制作) pythonのグローバル変数 2 2022/11/25 18:02
- JavaScript console.logがどうしても2つ機能しないのでアドバイスをくださいお願いします 2 2022/07/07 22:13
- FTTH・光回線 グローバルIPアドレスの変更について 1 2022/04/23 05:32
- JavaScript jsでifの返り値にgetelementbyidは使えませんよね。 1 2022/07/27 20:24
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- 格安スマホ・SIMフリースマホ Xiaomi 12Tでau回線のVOLTEが解放できません 7 2022/10/28 17:42
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
functionから別のfunctionを実...
-
関数でy=g(x)のgとは何の略です...
-
Javascriptで引数の参照渡しか...
-
CDの曲をケータイのSDに移す
-
ASP 最終日の表示
-
JavaScript 、function、return
-
jQueryでzipを解凍読み込みする...
-
小数点以下を5刻みで表示
-
jQuery cssメソッドでの変数の...
-
現在地の取得について
-
Javascriptで文字列操作
-
jQueryを使用したギャラリー
-
idを使わずにonclickで自身の要...
-
jQueryの"return false"の役割...
-
javascriptで自動計算フォーム...
-
日本語入力の禁止
-
URLの一部をコピーできるブック...
-
google apps scriptの終了のさせ方
-
空の配列に2次元配列の追加
-
第3日曜日のみの日付を取得、...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
idを使わずにonclickで自身の要...
-
functionから別のfunctionを実...
-
関数でy=g(x)のgとは何の略です...
-
jslintのエラーについて質問
-
クリックすると上に開くアコー...
-
XMLHttpRequestでキャッシュを...
-
ajax反映後のjqueryが動かない
-
function(e)の意味を教えてくだ...
-
要素名がスペースを含む場合のj...
-
jQueryの :not() .not() が有効...
-
jQueryでzipを解凍読み込みする...
-
関数名をテキストから読み込む...
-
getElementByIdを使用したグロ...
-
jqueryuiのdialog
-
jqueryのグローバル変数とロー...
-
jQuery 同じ処理を関数にまとめ...
-
XMLHttpRequestオブジェクトが...
-
addEventListener()でリスナー...
-
drawImageの描画順序の指定につ...
-
javascript(jQuery)でセル内...
おすすめ情報