
~JavaScript~
var sub = window.open(~);
sub.document.getElementById("Id").value = "test";
~html~
<input type="hidden" name="Id" id="Id" value="">
上記ソースは省略していますが上記のように記載しています。
子画面を開かずに実行すると「sub.document.getElementById("Id")」がnullになってしまいます。
子画面を開いたままだとnullになりません。
FireFoxのみで、IEだとnullになりません。
これは記載の誤りでしょうか?
No.2ベストアンサー
- 回答日時:
ああ・・・なんとなくわかりました。
setIntervalでチェックするとうまくいくかも
<script>
function myfunc(){
var sub = window.open("子ページ");
var timerId=setInterval(function(){
if(sub.document.getElementById("Id")!=null){
sub.document.getElementById("Id").value = "test";
clearInterval(timerId) ;
}
},100);
}
</script>
<input type="button" value="open" onclick="myfunc()">
回答ありがとうございます。
何とか自力で解決することができました。
以下で進めてみようと思いますが、もし何かある場合は参考にさせていただきます。
if (sub.document.getElementById("Id") != null) {
// 値設定
} else {
sub.onload = function() {
// 値設定
}
}
No.3
- 回答日時:
動作をキチンと確認していないので、申し訳ありませんが・・・
window.openで新しいドキュメントを読み込んでいますので、その読み込みに要する時間と、getElementByIdでスクリプトから要素を取得しようとするタイミングとが逆転していると(まだ読込終了していないと)、要素を取得できないことになりそうです。
ANo2様の回答は、少し時間を置いて(=読み込んでから)、処理を行うようにしようという試みかと推測します。
実際の読込時間は環境に依存しますので、読込状況を確認して処理をするのが良いかも知れません。
https://developer.mozilla.org/ja/docs/Web/API/Do …
イメージとしてこんな感じ?
var doc = sub.document;
if(doc && doc.readyState=="complete") Func(); else sub.onload = Func;
//Funcは実際の処理を行う関数
あるいは、readyState=="complete"になるまでwhile等で待つとか・・・
(この場合は、タイムアウトを設定しておいた方が良いですが・・・)
回答ありがとうございます。
No.2に自力で解決した方法を記載しました。
ドキュメント読み込み終了後でなければ取得できないようなので
回答と同じくonloadを使用しました。
No.1
- 回答日時:
>子画面を開かずに実行すると
if(sub){
sub.document.getElementById("Id").value = "test";
}
など最低限のチェックをいれてみてはいかがでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javaScriptの変数をJavaの変数...
-
JavaScriptのfileオブジェクト...
-
onchangeイベントを強制的に発...
-
onclickが動作しない
-
fileUploadオブジェクトへの値...
-
<input>の選択肢をプルダウンメ...
-
Selectボックスの幅を自動で広...
-
<JavaScript>tableタグを入力不...
-
ASP.NETでNAME属性を固定にしたい
-
RegularExpressionValidatorの...
-
クリックされた罫表セルの行番...
-
同じ名前のセレクトがある場合...
-
プルダウンで選択された値を別...
-
二次元配列に数字をランダムに...
-
sessionの値でボタンを活性・非...
-
JQueryで2つのテキストフィー...
-
cookie使用時にundefinedと表示...
-
doPostBack 関数について
-
【FORM】 リンク文字で submit...
-
tableの任意行にfocusをあてる
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
onchangeイベントを強制的に発...
-
javaScriptの変数をJavaの変数...
-
VB.NETで<Input>タグ、<text...
-
iOSのみダブルタップが必要
-
JavaScriptのfileオブジェクト...
-
追加ボタンを押した際に ok ボ...
-
onClickがinput type="image"だ...
-
innerHTML内では改行は禁止?
-
javascriptでチェックボックス...
-
パラメータから取得した文字をH...
-
クリックさせたいが、click()が...
-
JSPファイルにJavaScriptを埋め...
-
ボタンで配列に代入
-
任意の<DIV></DIV>の中に計算結...
-
javascript教えてください
-
WordpressのCocoonというテーマ...
-
ボタンかリンクをクリックする...
-
HTMLのテキストボックスへのド...
-
onclickが動作しない
-
複数のボタンに対するActionと...
おすすめ情報
質問が不足していました。
子画面に値を渡したいのですがfirefoxだと「getElementById("Id")」がnullになるため値を渡せません。
if(sub)を入れましたがエラーが出なくなるだけで値が渡せないままです。
どうすれば値が渡せるのでしょうか?