\r\n \r\n\r\n\r\n\r\n```\r\n\r\nnews.html\r\n\r\n```html\r\n\r\n\r\n\r\n \r\n ポータル\r\n\r\n \r\n\r\n \r\n
\r\n 5/8【注意】動物シールについて\r\n
\r\n
\r\n これまでのクッキーについていた動物シールは、
\r\n キリンさんがついていました。

\r\n
\r\n
\r\n\r\n \r\n
\r\n 5/3【周知】語句登録の追加\r\n
\r\n
\r\n @v→【ヴィクトリア】
\r\n @り→【リンゴスター】or【リサ・ローブ】or【リンカーン】

\r\n
\r\n
\r\n \r\n \r\n\r\n\r\n```\r\n\r\nindex.js\r\n\r\n```javascript\r\nfunction clickBtn1(){\r\n console.log(\"テスト1btn1\")\r\n const obj = document.getElementById(\"5/13 我が家の怪談\");\r\n console.log(obj);\r\n\r\n if(obj.style.display==\"none\"){\r\n console.log(\"obj.style.display\");\r\n obj.style.display=\"block\";\r\n } else {\r\n console.log(\"テスト2btn1\");\r\n obj.style.display =\"none\";\r\n }\r\n}\r\n\r\nfunction clickBtn2(){\r\n console.log(\"テスト1btn2\")\r\n const obj2 = document.getElementById(\"5/8【注意】動物シールについて\");\r\n console.log(obj2);\r\n\r\n if(obj2.style.display==\"none\"){\r\n console.log(\"obj2.style.display\");\r\n obj2.style.display=\"block\";\r\n } else {\r\n console.log(\"テスト2btn2\");\r\n obj2.style.display =\"none\";\r\n }\r\n}\r\n```\r\n\r\nportal.htmlの展開2のボタンでnews.html内の動物シールを開きたいのですが、TypeError: null is not an objectだと怒られてしまいます。\r\n\r\n展開1のボタンですぐ下の我が家の怪談は開くのですが、動物シールはnullだと言われているので参照の引き渡しがうまくできていないためだとは思うのですが自分の今の実力では解決することができないため、\r\nお力添えをいただければと思います。よろしくお願いいたします。","answerCount":2,"upvoteCount":0,"datePublished":"2021-05-15T15:50:31.599Z","dateModified":"2021-05-21T01:50:11.437Z","acceptedAnswer":{"@type":"Answer","text":"iframe内のhtmlはその親のhtmlの要素と同じようには使用できません。\r\nいったんiframeの要素を持ってきて`.contentWindow.document`から中身を持ってくることが出来ます。\r\n\r\n```javascript\r\nconst iframe = document.getElementById(\"iframeのId\");\r\nconst iframe_youso = iframe.contentWindow.document.getElementById(\"5/8【注意】動物シールについて\");\r\n```","dateModified":"2021-05-27T06:52:10.606Z","datePublished":"2021-05-27T06:52:10.606Z","upvoteCount":1,"url":"https://teratail.com/questions/338515#reply-468679"},"suggestedAnswer":[{"@type":"Answer","text":"まず、共有したい部分のみのhtmlファイルを作ります。これは``や``などの記述は書かずに、読み込む部分のみを記述します。\r\n \r\n```html\r\n
これまでのクッキーについていた動物シールは、
キリンさんがついていました。

\r\n```\r\nこれだけで良いです。これを仮に\r\ninclude.html という名前にしときます。(このように外部ファイルを読み込む事をインクルードするといいます)\r\n\r\nで、読み込んだ物を表示するファイル上\r\nでjQueryを使用する場合は、内に\r\n```\r\n \r\n```\r\nと入れときます(jQueryのバージョンは必ずしもこれでなくても良いですが、これでいけます)。\r\n\r\nそして、どの場所に表示したいか決めて、まあ仮に\r\n```\r\n
\r\n```\r\nとしますね。\r\n\r\nそしたらscriptの記述を\r\n```jQuery\r\n\r\n```\r\nとすれば`id=\"here\"`の部分に読み込めます。\r\n\r\nで、ググったらjQueryのこのやり方のjavascriptへの書き換え方を教えてくれてるところがありましたので、一応リンク貼っておきますね。\r\n\r\n[【脱jQuery】.load()で別ページから共通パーツを読み込むのをネイティブに書き換え](https://www.weblab.co.jp/staff/creator/8059.html)\r\n\r\nあ、これはこのままではページがロードされた時に表示されてしまいますので、id=\"here\"の部分は、最初は隠しておいて、ボタンクリックで表示するようにscriptを書いてくださいね。","dateModified":"2021-05-19T02:11:39.297Z","datePublished":"2021-05-19T02:03:03.140Z","upvoteCount":1,"url":"https://teratail.com/questions/338515#reply-466815","comment":[{"@type":"Comment","text":"私の理解不足で言葉足らずの質問でご迷惑をおかけいたしました。\r\nしかし、何も回答つかぬところで答えていただけたおかげで自分の不足を知ることができました。ご助力ありがとうございました。","datePublished":"2021-06-06T17:33:35.849Z","dateModified":"2021-06-06T17:33:35.849Z"}]}],"breadcrumb":{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"トップ","url":"https://teratail.com"},{"@type":"ListItem","position":2,"name":"参照に関する質問","url":"https://teratail.com/tags/%E5%8F%82%E7%85%A7"},{"@type":"ListItem","position":3,"name":"参照","url":"https://teratail.com/tags/%E5%8F%82%E7%85%A7"}]}}}
質問するログイン新規登録
参照

参照は、プログラミングにおいて変数や関数といったメモリ空間上での所在を指示するデータのことを指します。その中にはデータ自体は含まれず、他の場所にある情報を間接的に指示するプログラムです。

JavaScript

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

HTML

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

1104閲覧

HTML内のiFrameの中のCSSで折りたたまれた文章をJavaScriptで展開させたい

sssaqj

総合スコア7

参照

参照は、プログラミングにおいて変数や関数といったメモリ空間上での所在を指示するデータのことを指します。その中にはデータ自体は含まれず、他の場所にある情報を間接的に指示するプログラムです。

JavaScript

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

HTML

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2021/05/15 15:50

編集2021/05/21 01:50

0

0

javascriptを使用して、htmlファイル間をまたいでcssを展開をしたいと考えています。

同ファイルであれば展開することができます。

Aのhtmlファイルで作ったボタンでAのcssの展開をjavascriptから開くことはできるのですが、
Aのhtmlファイルで作ったボタンからBのファイルを展開しようとするとnull is an not objectのエラーが出てしまうのです。

portal.html

html

1<html lang="ja"> 2<meta charset="utf-8"> 3<head> 4 <title>ポータル</title> 5 <body> 6 <TABLE width="100%" border="1"> 7 <TBODY> 8 <TR> 9 <td align= "TOP" width= "20%" height="100%"> 10 <H4>業務準備</H4> 11 <DIV class="side" align="left"> 12 <各種システム><br> 13 <掲示板><br> 14 <関連><br> 15 <ルール><br> 16 <input type="button" value="展開1" onclick="clickBtn1()"/> 17  <input type="button" value="展開2" onclick="clickBtn2()"/> 18 <br> 19 <b> 20 <div onclick="obj1=document.getElementById('5/13 我が家の怪談').style; 21 obj1.display=(obj1.display=='none')?'block':'none';"> 22 <a style="cursor:pointer;">5/13 我が家の怪談</a> 23 </div> 24 <div id="5/13 我が家の怪談" style="display:none; clear:both;"> 25 <h4>昨晩のことだった!<br><hr></h4> 26 </div> 27 </b> 28 <td colspan= "2" width="50%" height="400"> 29 <DIV class="side" align="center"> 30 <font size="6">周知事項</font><br> 31 内容は<font color="red">タイトルをクリック</font>展開して下さい/検索はCtrl+F(タイトルのみ検索)<br> 32 <iframe Src="news.html" Width="95%" Height="350" name="mintag"></iframe><br> 33 </DIV> 34 </td> 35 </TR> 36 </TBODY> 37 </TABLE> 38 <script src="js/index.js" charset="utf-8"></script> 39 </body> 40</head> 41</html> 42

news.html

html

1<html lang="ja"> 2<meta charset="utf-8"> 3<head> 4 <body> 5 <title>ポータル</title> 6 7 <style type="text/css"> 8 <!-- 9 A:hover{ 10 text-decoration: underline; 11 background-color: lightcyan; 12 } 13 </style> 14 15 <b> 16 <div onclick="obj=document.getElementById('5/8【注意】動物シールについて').style; 17 obj.display=(obj.display=='none')?'block':'none';"> 18 <a style="cursor:pointer;">5/8【注意】動物シールについて</a> 19 </div> 20 <div id="5/8【注意】動物シールについて" style="display:none; clear:both;"> 21 これまでのクッキーについていた動物シールは、<br> 22 キリンさんがついていました。<br><br> 23 </div> 24 </b> 25 26 <b> 27 <div onclick="obj=document.getElementById('5/3【周知】語句登録の追加').style; 28 obj.display=(obj.display=='none')?'block':'none';"> 29 <a style="cursor:pointer;">5/3【周知】語句登録の追加</a> 30 </div> 31 <div id="5/3【周知】語句登録の追加" style="display:none; clear:both;"> 32 @v→【ヴィクトリア】<br> 33 @り→【リンゴスター】or【リサ・ローブ】or【リンカーン】<br><br> 34 </div> 35 </b> 36 <script src="js/index.js" charset="utf-8"></script> 37 </body> 38</head> 39</html>

index.js

javascript

1function clickBtn1(){ 2 console.log("テスト1btn1") 3 const obj = document.getElementById("5/13 我が家の怪談"); 4 console.log(obj); 5 6 if(obj.style.display=="none"){ 7 console.log("obj.style.display"); 8 obj.style.display="block"; 9 } else { 10 console.log("テスト2btn1"); 11 obj.style.display ="none"; 12 } 13} 14 15function clickBtn2(){ 16 console.log("テスト1btn2") 17 const obj2 = document.getElementById("5/8【注意】動物シールについて"); 18 console.log(obj2); 19 20 if(obj2.style.display=="none"){ 21 console.log("obj2.style.display"); 22 obj2.style.display="block"; 23 } else { 24 console.log("テスト2btn2"); 25 obj2.style.display ="none"; 26 } 27}

portal.htmlの展開2のボタンでnews.html内の動物シールを開きたいのですが、TypeError: null is not an objectだと怒られてしまいます。

展開1のボタンですぐ下の我が家の怪談は開くのですが、動物シールはnullだと言われているので参照の引き渡しがうまくできていないためだとは思うのですが自分の今の実力では解決することができないため、
お力添えをいただければと思います。よろしくお願いいたします。

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

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

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

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

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

mari.rinn

2021/05/17 01:32

私の解釈が違ってたらすみませんが、要するにやりたいことは、動物シールについて のところを、共有したい ということで良いのでしょうか? その場合、その呼び出したい部分だけを記述したhtmlファイルを作ってjQueryで呼び出すと簡単に呼び出せますが、そういうやり方でも構いませんか?
sssaqj

2021/05/18 22:41

返事が遅くなってしまいすみません。使用環境でjqueryを使えるかの確認に時間がかかるのですが教えていただければとても助かります。
sssaqj

2021/05/21 02:09

タイトルを修正しました。自分の理解不足で問題点の特定が正確にできていませんでした。誤解を招いて申し訳ないです。
guest

回答2

0

ベストアンサー

iframe内のhtmlはその親のhtmlの要素と同じようには使用できません。
いったんiframeの要素を持ってきて.contentWindow.documentから中身を持ってくることが出来ます。

javascript

1const iframe = document.getElementById("iframeのId"); 2const iframe_youso = iframe.contentWindow.document.getElementById("5/8【注意】動物シールについて");

投稿2021/05/27 06:52

makosankibu

総合スコア289

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

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

sssaqj

2021/06/06 17:30 編集

お返事が大変遅くなってしまい申し訳ありません。 完全に自分のスキル不足の質問でした。 MDNのjavascriptでDOMとfunctionについての基礎知識を養うことから必要でありました。 さらにCORSも何のことかわかっていずググりまくり、GitHubで簡単なホームページ をアップロードの仕方を学んでようやく教えていただいた通りで動かすことができました。 ご教示いただき大変ありがとうございました。
guest

0

まず、共有したい部分のみのhtmlファイルを作ります。これは<head><body>などの記述は書かずに、読み込む部分のみを記述します。

html

1<div id="5/8【注意】動物シールについて" style="display:none; clear:both;"> これまでのクッキーについていた動物シールは、<br> キリンさんがついていました。<br><br> </div>

これだけで良いです。これを仮に
include.html という名前にしときます。(このように外部ファイルを読み込む事をインクルードするといいます)

で、読み込んだ物を表示するファイル上
でjQueryを使用する場合は、<head>内に

<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>

と入れときます(jQueryのバージョンは必ずしもこれでなくても良いですが、これでいけます)。

そして、どの場所に表示したいか決めて、まあ仮に

<div id="here"></div>

としますね。

そしたらscriptの記述を

jQuery

1<script> 2$(function(){ $("#here").load("include.html"); }) 3 </script>

とすればid="here"の部分に読み込めます。

で、ググったらjQueryのこのやり方のjavascriptへの書き換え方を教えてくれてるところがありましたので、一応リンク貼っておきますね。

【脱jQuery】.load()で別ページから共通パーツを読み込むのをネイティブに書き換え

あ、これはこのままではページがロードされた時に表示されてしまいますので、id="here"の部分は、最初は隠しておいて、ボタンクリックで表示するようにscriptを書いてくださいね。

投稿2021/05/19 02:03

編集2021/05/19 02:11
mari.rinn

総合スコア296

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

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

sssaqj

2021/06/06 17:33

私の理解不足で言葉足らずの質問でご迷惑をおかけいたしました。 しかし、何も回答つかぬところで答えていただけたおかげで自分の不足を知ることができました。ご助力ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.29%

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

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

質問する

関連した質問