~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で質問しましょう!
似たような質問が見つかりました
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- JavaScript Javascript初心者|jQueryの.val()で値を取得し複数の要素を連結させる方法知りたい 2 2022/06/02 12:06
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript プログラムがうまく動きませんレビューお願いします 1 2022/07/10 05:08
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
onchangeイベントを強制的に発...
-
開いた子ウィンドウにあるボタ...
-
formのfileの値をhiddenでも持...
-
onclickが動作しない
-
WordpressのCocoonというテーマ...
-
SendKeys()が一番最後に実行さ...
-
HTMLのテキストボックスへのド...
-
JavaScriptでIE上のボタンクリック
-
innerHTML内では改行は禁止?
-
コードレビューをお願いします。
-
BackSpaceしたい(QNo.2734284の...
-
任意の<DIV></DIV>の中に計算結...
-
javaScriptの変数をJavaの変数...
-
JSPファイルにJavaScriptを埋め...
-
JavaScriptのfileオブジェクト...
-
Javascriptで'(シングルクォー...
-
VB.NETで<Input>タグ、<text...
-
javascriptで作成されたテーブ...
-
window.openで開いた子ウィンド...
-
クリックさせたいが、click()が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
onchangeイベントを強制的に発...
-
JavascriptでDOM-based XSSの発...
-
onclickが動作しない
-
クリックさせたいが、click()が...
-
追加ボタンを押した際に ok ボ...
-
innerHTML内では改行は禁止?
-
ボタンかリンクをクリックする...
-
formのfileの値をhiddenでも持...
-
javaScriptの変数をJavaの変数...
-
JavaScriptのfileオブジェクト...
-
VB.NETで<Input>タグ、<text...
-
受け取ったパラメータが文字化け
-
JQueryでfunctionに引数としてI...
-
javascriptで作成されたテーブ...
-
jQueryで設定したイベントハン...
-
開いた子ウィンドウにあるボタ...
-
コードレビューをお願いします。
-
ボタンをクリックするとテキス...
-
BackSpaceしたい(QNo.2734284の...
-
URL 判定
おすすめ情報
質問が不足していました。
子画面に値を渡したいのですがfirefoxだと「getElementById("Id")」がnullになるため値を渡せません。
if(sub)を入れましたがエラーが出なくなるだけで値が渡せないままです。
どうすれば値が渡せるのでしょうか?