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

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

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

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

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

HTML

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

Q&A

解決済

1回答

2480閲覧

Ajaxで非同期でページを読み込んだ際、読み込み済みのJavascriptを使えるようにするには

Newbi

総合スコア163

JavaScript

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

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

HTML

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

0グッド

0クリップ

投稿2018/04/02 20:25

失礼いたします。
Ajaxをもちいてページを作成しているのですが、少し気にかかったのでご教授いただければ助かります。

例として、

ready.html
load.html
ready.js
ajax.js

の4ファイルがあったとし、

・ready.html

html

1<html> 2 <head> 3 <meta charset='utf-8'> 4 <script type=text/javascript src='ready.js'></script> 5 <script type=text/javascript src='ajax.js'></script> 6 </head> 7 <body> 8 <div id='Wrap'> 9 <div id='example'></div> 10 </div> 11 </body> 12</html>

・load.html

html

1<div id='example'></div>

・ready.js

javascript

1document.addEventListener('DOMContentLoaded', function(){ 2 const elem = document.getElementById('example'); 3 const elemWidth = elem.clientHeight + 'px'; 4 elem.style.width = elemWidth; 5});

・ajax.js

javascript

1 document.addEventListener('DOMContentLoaded', function(){ 2 document.getElementById('Wrap').addEventListener('click', function(){ 3 const xh = new XMLHttpRequest(); 4 xh.open('POST', 'load.php'); 5 xh.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded' ); 6 xh.send(null); 7 xh.addEventListener('load', function(){ 8 document.getElementById('Wrap').innerHTML = xh.responseText; 9 }); 10 }); 11 }); 12

といった場合で、Wrapの子要素であるexampleを入れ替えてることになるのですが、このexampleの幅を最初にJavascriptでとっているわけですが、Ajaxで中身を入れ替えるとこの最初に設定した幅が再挿入した場合に適用されません。
javascriptファイルを読み込み直せばいいのかと思い、ajaxで更新する部分にjavascriptのファイルを置いてみたりしましたが、効きませんでした。
ajaxで読み込んだ後に、幅を取るスクリプトをもう一度実行するよう追記すれば適用されます。
またclickイベントのものも発火しませんでした(追記すればOKです)。
現時点では関数化してるものが多いので、それほど困ってはないんですが、少しでも記述を減らしたいので気になりました。

分かりにくい説明かもしれませんが、よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

ready.jsの中身を後から呼び出せるように出来ればよいのですから,現在イベントリスナとして登録している匿名関数に名前を付けておけばよいのです. 例えばこのように.

JavaScript

1//ready.js 2function ready(){//この処理はajax.jsからも呼び出す 3 const elem = document.getElementById('example'); 4 const elemWidth = elem.clientHeight + 'px'; 5 elem.style.width = elemWidth; 6} 7document.addEventListener('DOMContentLoaded', ready);

JavaScript

1//ajax.js 2 document.addEventListener('DOMContentLoaded', function(){ 3 document.getElementById('Wrap').addEventListener('click', function(){ 4 const xh = new XMLHttpRequest(); 5 xh.open('POST', 'load.php'); 6 xh.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded' ); 7 xh.send(null); 8 xh.addEventListener('load', function(){ 9 document.getElementById('Wrap').innerHTML = xh.responseText; 10 }); 11 ready(); 12 }); 13 });

投稿2018/04/02 21:51

defghi1977

総合スコア4756

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

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

Newbi

2018/04/05 06:05

なるほど! 単純なことに気が付いてませんでした。。。 ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問