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

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

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

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

6551閲覧

sessionStorageで配列を受け取る場合

rainbowsix

総合スコア102

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2017/06/08 23:56

js初心者です。
セッションでボタンを押した状況を記憶さえて
移動した場合再現するコードを組んでいます。

jquery

1//送る側 2$(function(){ 3 $('form[name="form_main"]').submit(function() { 4 var s_btn_arr=[]; 5 var s_cnt=0; 6 7 8 $(".s_btn").each(function(i) { 9 if($(this).children("i").hasClass("fa-minus")) { 10 s_btn_arr.push(i); 11 } 12 s_cnt++; 13 }); 14 15 var storage = sessionStorage; 16 storage.setItem('s_btn_arr', s_btn_arr); 17 storage.setItem('s_cnt', s_cnt); 18 }); 19 }); 20 21//受け取る側 22 $(function(){ 23 var storage = sessionStorage; 24 storage.getItem('s_btn_arr'); 25 storage.getItem('s_cnt'); 26 if(storage.getItem('s_btn_arr')){ 27 var s_btn_arr = []; 28 s_btn_arr = storage.getItem('s_btn_arr'); 29 } 30 if(storage.getItem('s_cnt')){ 31 var s_cnt = storage.getItem('s_cnt'); 32 } 33 34 35 alert(s_btn_arr); 36 37 if(s_btn_arr){ 38 for (var i=0; i<s_cnt; i++){ 39 if (s_btn_arr.indexOf(i) >= 0) { 40 $(".open_btn").eq(i).trigger("click"); 41 alert(i); //結果 42 }}; 43 } 44 // }); 45 });

s_btn_arrが10,11が入ると
結果が
0
1
10
11
になってしまいます。
本当は
10
11
になるようにしたいのですがどうしたらいいでしょうか?
丸投げで申し訳ないですがよろしくお願いいたします。

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

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

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

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

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

rainbowsix

2017/06/09 00:20 編集

失礼いたしました。解決済にしました。
guest

回答1

0

ベストアンサー

0,1はforの中のalertですね。
forでカウンタで++していっているiをalertしているため出力されています。
しいてならalert(s_btn_arr[i]);でおそらく10、11と出力されるのではと思います。

あと、JSONを使った方がやりやすいかなぁと思います。
ざっくり作ってみたサンプルソースで申し訳ないですが、ヒントとして参考・活用してください。

HTML

1 <button class="on-btn" type="button">ON</button> 2 <button class="get-btn" type="button">GET</button> 3 <button class="reset-btn" type="button">RESET</button> 4 5 <script src="./jquery.js"></script> 6 <script> 7 var storage = sessionStorage; 8 //送る側 9 $(function() { 10 $('.on-btn').on("click", function() { 11 var s_btn_arr = []; 12 var s_cnt = 0; 13 s_btn_arr.push(10); 14 s_btn_arr.push(11); 15 storage.setItem('s_btn_arr', JSON.stringify(s_btn_arr)); //JSON文字列に変換 16 }); 17 }); 18 19 //受け取る側 20 $(function() { 21 $('.get-btn').on("click", function() { 22 btntext = storage.getItem('s_btn_arr'); 23 if (btntext != "" && btntext != null) { //何も保存されないときはnullなのでこちらでチェック 24 btnarr = JSON.parse(btntext); //JSON文字列を配列に 25 //取り出し 26 for (i = 0; i < btnarr.length; i++) { 27 alert(btnarr[i]); 28 } 29 30 } 31 }); 32 }); 33 //削除 34 $(function() { 35 $('.reset-btn').on("click", function() { 36 storage.removeItem('s_btn_arr'); 37 }); 38 }); 39 </script>

HTMLがどのようになっているか分からないので、ひとまず固定で10と11を配列に入れてJSONにしてsessionStorageに保存し、
受け取る側ではパースして配列に戻してforしました。
これで「10、11」が出るようになっています。
なおs_cntはあくまで配列の件数となり、配列.lengthで件数とれるのでsessionStorageに保存していません。

投稿2017/06/09 00:32

m.ts10806

総合スコア80850

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

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

rainbowsix

2017/06/10 06:39

ありがとうございます。ジャストでした!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問