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

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

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

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

JavaScript

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

Q&A

解決済

1回答

9270閲覧

Javascriptでの変更内容の画面への反映タイミング。

KITANOYoshitomo

総合スコア7

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

JavaScript

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

0グッド

0クリップ

投稿2019/01/17 09:51

発生している問題・エラーメッセージ

Javascriptでページ内容を変更した際の、画面への反映タイミングで悩んでいます。

例えば、clickイベント発火後、cssでbackground-colorを変更したとします。
その際、前後にalertを挟んで下記のようにコーディングしたとします。

html

1 alert("jQuery STEP1"); 2 $('body').css({ 'background-color' : 'red'}); 3 alert("jQuery STEP2");

この際、FirefoxとIE11,Edgeでは背景色がredになるのが、STEP1が終了した(つまりalertのボックスでOKをクリックしたタイミング)時点です。
しかし、Chrome,OperaはSTEP2が終了した時点になります。

これは、ピュアのJavascriptでも同様です。また、css()だけでなく、text()でも同様です。

このような挙動の違いは今までに認識しておらず戸惑っております。
理由や回避方法をどなたかご存じでしたら是非ご教授頂きたく存じます。

該当のソースコード

html

1<html> 2<head> 3<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 4</head> 5<body style="background-color:white;"> 6<button id="hoge"> 7Red Background Color by jQuery 8</button> 9<button id="page"> 10Blue Background Color by Javascript 11</button> 12<script> 13 14$('#hoge').on('click', function() { 15 alert("jQuery STEP1"); 16 $('body').css({ 'background-color' : 'red'}); 17 alert("jQuery STEP2"); 18}); 19 20 21window.onload = function() { 22 document.getElementById("page").onclick = function() { 23 var target = document.getElementsByTagName("body")[0]; 24 alert("Javascript STEP1"); 25 target.style.backgroundColor = "blue"; 26 alert("Javascript STEP2"); 27 }; 28} 29 30</script> 31</body> 32</html> 33

実際のところやりたいこと

$.ajaxで、Loading画面を表示する際に、clickイベント内で

javascript

1$('div.loadingWrapper').css({ 'display' : 'block'});

としても全く反映されないことからこの問題に行き当たりました。

補足情報(FW/ツールのバージョンなど)

各ブラウザは最新版です。

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

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

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

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

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

guest

回答1

0

ベストアンサー

UIスレッドとwindow.alertとかですかねぇ

投稿2019/01/17 10:00

papinianus

総合スコア12705

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

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

KITANOYoshitomo

2019/01/19 02:24

参考になりました。回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問