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

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

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

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

JavaScript

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

jQuery

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

Q&A

解決済

1回答

1438閲覧

Local Storageの値をIEで取得できない

tomato01

総合スコア80

HTML5

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

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2020/04/24 06:21

編集2020/04/24 07:05

ブラウザーのLocal Storage機能でお気に入り追加機能を実装しました。
IE以外のブラウザでは正常に動くのですが、 IEだと値が取得できません。

$(function () { #Local Storageの値を挿入 setInterval(function () { $(".button").on("click", function () { var mydata = new Set( JSON.parse(localStorage.getItem("mydata") || "[]") ); mydata.add($(this).val()); console.log(mydata); localStorage.setItem("mydata", JSON.stringify([...mydata])); # おそらくここでエラーになっている #お気に入りボタン(id="favo_count"がある場所)にLocal Storageの値を挿入 var jsonObj = localStorage.getItem("mydata"); var jsObj = JSON.parse(jsonObj); var favo5 = document.getElementById("favorites"); favo5.value = jsObj; var favo_8 = document.getElementById("favo_count"); favo_8.textContent = jsObj.length + "件"; }); }, 6000); $(":reset").on("click", function () { localStorage.setItem("mydata", "[]"); }); });

試したこと
①下記のサイトを参考に、json2.js というのを入れてみましたが改善しませんでした。
https://www.softel.co.jp/blogs/tech/archives/3609

②babelのオンラインサイトでコードを変換したのですが改善しませんでした。
https://babeljs.io/repl/#?browsers=&build=&builtIns=false&spec=false&loose=false&code_lz=FBA&debug=false&forceAllTransforms=false&shippedProposals=false&circleciRepo=&evaluate=true&fileSize=false&timeTravel=false&sourceType=module&lineWrap=true&presets=es2016%2Creact%2Cstage-2%2Ces2015-loose&prettier=true&targets=&version=7.9.0&externalPlugins=

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

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

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

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

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

m.ts10806

2020/04/24 07:01

コードはマークダウンの機能を利用してご提示ください。
tomato01

2020/04/24 07:06

ご指摘ありがとうございます。コードを修正致しました。
guest

回答1

0

ベストアンサー

IEでは、new Setに配列の引数を指定できません(MDN)。

空のnew Set()を行ってから、配列の中身を1つずつ追加する作業を行う必要があります。

投稿2020/04/24 06:27

編集2020/04/24 06:29
maisumakun

総合スコア145184

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

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

tomato01

2020/04/24 06:33

ご回答を頂き誠にありがとうございます。すみません私の勉強不足で「配列の中身を1つずつ追加する作業」の書き方がイメージがつかないのですが、どのような風に記載をすればいいのでしょうか。
maisumakun

2020/04/24 06:38

JSON.parse(localStorage.getItem("mydata") || "[]")で取ってきた配列をforなりforEachなりで回して、1つずつaddしていくだけです。
tomato01

2020/04/24 06:52

ご回答ありがとうございます。すみません、下記で正しいでしょうか。 var mydata = new Set(); var new_data = JSON.parse(localStorage.getItem("mydata") || "[]") for ( var i = 0; i < new_data.length; i++ ) { mydata.add($(this).val()); }
maisumakun

2020/04/24 06:54 編集

ループの中身はmydata.add(new_data[i]); ですね。
tomato01

2020/04/24 07:18

ご指摘を頂きありがとうございます。教えて頂いたコードに変更をしたのですが、ボタンをクリックしても件数が増えていかないです。 ## コンソールではボタンを押す毎に下記が表示されます。 Set(0) {}
maisumakun

2020/04/24 07:22

IEでは、JSON.stringify([...mydata])もうまく行かないです。やはりmydata.forEachを回して配列に変換する必要があります。 …というより、Setを使わず配列での管理にしてしまった方がいいかもしれません(追加時には既存のデータをindexOfで調べて、なかったら追加する)。
tomato01

2020/04/24 07:26

ご回答を頂き誠にありがとうございます。お伝えを頂いた方法で検討してみます。どうもありがとうございます(すいません、またコードを聞くかもしれません。)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問