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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

Q&A

解決済

1回答

3108閲覧

「history.back()」でページを戻った際、jsで変更された前ページのclassを再現する

vio

総合スコア15

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

0グッド

1クリップ

投稿2018/09/21 06:36

編集2018/09/21 07:03

実現したいこと

「history.back()」で前ページに戻った際、
前ページで行われたjavascriptによるclassの変更状態を再現する。

前提

想定OSはWindows、ブラウザはChromeです。

その他のチェックボックスにチェックを入れると、<tr>のclassが「other_on」に変化します。

<tr>のデフォルトのclassは「other_off」です。

前ページ↓

HTML

1<input type="checkbox" name="cancellation[]" value="その他" onclick="checkdiv(this,'other')" id="8"><label for="8">その他</label> 2 3<tr id="other" class="other_off"> 4 <th></th> 5 <td></td> 6</tr>

js↓

js

1function checkdiv( obj,id ) { 2 if( obj.checked ){ 3 document.getElementById(id).classList.remove("other_off"); 4 document.getElementById(id).classList.add("other_on"); 5 } 6 else { 7 document.getElementById(id).classList.remove("other_on"); 8 document.getElementById(id).classList.add("other_off"); 9 } 10}

こちらはフォーム画面なのですが
現状、確認画面の「history.back()」で上記HTMLに戻ると、
その他のチェックボックスにチェックが入っていても<tr>のclassが「other_off」になっています。

チェックをつけて次ページへ遷移し、
その状態から「history.back()」してもclassが「other_on」になっているようにしたいです。

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

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

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

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

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

yambejp

2018/09/21 07:00

「戻る」処理はブラウザによって処理が異なります。統一するのは難しいでしょう。ちなみになんのOSのなんのブラウザを想定していますか?
vio

2018/09/21 07:02

yambejp様 ご質問ありがとうございます。OSはwindows、ブラウザはChromeを想定しております
guest

回答1

0

ベストアンサー

JavaScript

1window.addEventListener('pageshow', function(event) { 2 const ev = document.createEvent('Event'); 3 ev.initEvent('click', true, true); 4 document.querySelector('#\38').dispatchEvent(ev); 5});

https://developer.mozilla.org/ja/docs/Web/Guide/Events/Creating_and_triggering_events

投稿2018/09/21 07:46

x_x

総合スコア13749

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

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

vio

2018/09/21 08:50

x_x様 ご回答ありがとうございます! いただいたソースで行いたい事が実現できました! ```js window.addEventListener('pageshow', function(event) { const ev = document.createEvent('Event'); ev.initEvent('click', true, true); document.querySelector('td input:nth-of-type(8)').dispatchEvent(ev); }); ``` nth-of-type(8)なのは、同じような項目が複数あったためです。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問