質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

5936閲覧

【JS・JQUERY】子画面の項目制御は、親画面から行うことは可能ですか?

HelloWorld2

総合スコア32

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2019/07/29 10:14

編集2019/07/29 10:48

前提・実現したいこと

  • 親画面にて、ボタンをクリックすると、子画面を別ウィンドウで開きます。(window.open())
  • 親画面側のJSで、子画面のボタンの表示/非表示や、活性非活性を記載したいです。
  • 子画面では、検索等の処理を行っており、親画面から制御したい項目には、静的なボタンだけでなく動的なボタンも含みます。

試したこと

html

1<!DOCTYPE html> 2<html> 3 <head lang="ja"> 4 <meta charset="UTF-8" /> 5 <title>html1</title> 6 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> 7 </head> 8 <body> 9 <button id="button1" onclick="openWindow()">button1</button> 10 <div id="loadHtml2"></div> 11 <script type="text/javascript"> 12 function openWindow(){ 13 test = window.open("./html2.html","test"); 14 test.document.getElementById("button2").removeAttribute("disabled"); 15 } 16 17 </script> 18 </body> 19</html>

html

1<!DOCTYPE html> 2<html> 3<body> 4<button id="button2" disabled=disabled>button2</button> 5test 6</body> 7</html>

実現可能かどうか、参考サイトなどご教示いただけると幸いです。
(調べたところ、子画面⇒親画面の操作はできますが、親画面⇒子画面の操作はできないのかと思ってます。※window.open()のオプションにも指定できないようなので)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

結論から言えば可能です。
ですが、HelloWorld2さんのコードには1点問題があります。
Window.openした直後に、test.document.getElementById("button2").removeAttribute("disabled");が走ってしまう点です。
Window.openした直後は、まだ./html2.htmlのロードが終わっていません。
なので、test.document.getElementById("button2")を見つけることができないのです。
ここまでわかれば解決策は簡単で、test.addEventListenerでロードイベントを作ってやればいいです。
ちょうどこんな感じです。
http://yutamptech.com/index_log.html

でもコードを修正するのは、ちょっと待ってください!
いい人間と悪い人間が存在するように、コードにもいいコード、悪いコードがあります。
子ウィンドウのロードが終わる前に、ユーザーが親ウィンドウを閉じないと絶対にいいきれますか?
通常別の画面に値を渡したいときは、GETメソッドかPOSTメソッドを使います。
そもそも画面遷移でなく子ウィンドウをわざわざ作る必要本当にありますか?
大きなお世話だとおもいますが、本当に親ウィンドウから子ウィンドウを操作する必要があるか、考えてみてください。

投稿2019/07/29 11:59

yutampp

総合スコア182

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

HelloWorld2

2019/07/30 00:48

ご回答ありがとうございます。 yutamppさんにご教示いただいた方法で実現できました。 本機能ですが、複数画面から共通で呼び出す画面があるのですが、それに対する、表示非表示や活性非活性の制御が画面ごとに異なり、その制御を、共通画面で行うより、各呼び出し元画面で行ったほうが「良いコード」かと思い、このような質問をいたしました。子ウィンドウを開くのは確定ですが、親画面から子ウィンドウを操作する必要があるかについては検討いたします。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問