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

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

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

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

Q&A

解決済

1回答

440閲覧

ユーザー情報が変更された際に、変更されましたとアラートを表示させたい。

ishidakouiki

総合スコア73

JavaScript

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

0グッド

1クリップ

投稿2022/04/27 08:23

編集2022/04/30 04:28

ユーザー情報変更ページ→edit.balde.phpからユーザー情報を変更し、
その後、ユーザー情報ページshow.balde.phpに画面遷移した際に、
変更が完了しました!とアラートを表示する機能を実装したいのですが、
showbalde.phpを表示したら、
検証ツールで
Uncaught ReferenceError: observer is not defined
at window.onload (
とエラーが表示される状態です。
observerが定義されていない?

observer.observe(elem, config);

の行の記述がおかしいのでしょうか?

記述内容

show.balde.php

1〜省略〜 2<script> 3 window.onload = function() { 4 // 変更を監視するノードを選択 5 const element = document.getElementById('name'); 6 7 // オブザーバーの設定 8 const config = { 9 attributes: true, //属性の変化を監視 10 childList: true, //子要素リストの変化を監視 11 characterData: true, //文字データの変化を監視 12 characterDataOldValue: true, //変更前の文字データを使用 13 }; 14 // MutationObserverでDOMの変更時にコールバック関数を実行する 15 const mo = new MutationObserver(function() { 16 //実行する処理 17 alert('変更が完了しました'); 18 }); 19 //監視をスタートする 20 observer.observe(element, config); 21 }; 22</script> 23〜省略〜 24<div> 25 <p>氏名</p> 26 <div> 27 <span id="name">{{ Auth::user()->name }}</span> 28 </div> 29</div> 30〜省略〜

記述方法等問題ありますでしょうか?

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

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

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

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

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

ishidakouiki

2022/04/27 09:35 編集

Lhankor_Mhyさん window.aoload = function ()を記述し#nameをnameに変更後確認したら、 //と表示されその下にundefinedと表示されています。 undefinedしか表示されていないということは、 var observer = new MutationObserver(function(){ alert('変更が完了しました'); }); の記述が読み込まれていないからでしょうか?
Lhankor_Mhy

2022/04/28 05:22

回答へのコメントは、回答のコメント欄に書いた方がいいです。 ここに書かれても通知が来ないので、気が付かない可能性があります。 --- 状況がよくわからないです。 「//と表示されその下にundefinedと表示されています」とのことですが、表示とはどこに表示されているのですか?
ishidakouiki

2022/04/30 04:29

すいません、質問内容変更いたしました。
Lhankor_Mhy

2022/04/30 04:30

問題を把握しました。
guest

回答1

0

ベストアンサー

この質問と同じ問題だと思います。

ボタンをクリックしてもイベントが発生しない


typoもありますね。
document.getElementById('#name')document.getElementById('name')


質問の変更に合わせて追記

observerが定義されていない?

ご認識の通りです。変数observer を定義してください。変数mo と混同しているように見えます。

投稿2022/04/27 08:26

編集2022/04/30 04:32
Lhankor_Mhy

総合スコア36138

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

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

ishidakouiki

2022/04/30 07:51

ご返答ありがとうございます! const mo から const observer に変更した所、 エラー表示は出なくなりましたが、 文字を変更したのに、変更が完了しました。 のアラートが表示されない状態です。 configのcharacterData: true, //文字データの変化を監視    characterDataOldValue: true, //変更前の文字データを使用 の記述で<span id="name">{{ Auth::user()->name }}</span> の内容が変更(更新)されたらアラートが出る認識で記述しているのですが、 どこか間違っているのでしょうか?
Lhankor_Mhy

2022/04/30 08:05

内容が変更される部分が記述されていないので何とも言えない感じですが、ご提示の JavaScript を当方で試してみたところ、(moの部分を修正した上で)問題なく動作しました。 おそらく、ここに書かれていないコードに原因があるのだと思います。
Lhankor_Mhy

2022/04/30 09:04

もしかして、PHPでの出力が MutationObserver で検出できるとお考えでしたら、それは違います。念のため。
ishidakouiki

2022/04/30 09:22

PHPでの出力が MutationObserver で検出できるとお考えでしたらそれは違います→(それは認識不足でした、、、) ↓ show.blade.phpの<span id="name">{{ Auth::user()->name }}</span> の変更を検知したい。 ↓ {{ Auth::user()->name }}はPHPでDBから値を取得しているので、 検知されない。という認識で間違いないでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問