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

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

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

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

Thymeleaf

Thymeleaf(タイムリーフ)とは、Java用のテンプレートエンジンで、特定のフレームワークに依存せず使用することが可能です。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

1回答

1728閲覧

javascriptでlocalstorageの多次元配列の保存と取得をしたい

x04.magic.z5

総合スコア0

JavaScript

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

Thymeleaf

Thymeleaf(タイムリーフ)とは、Java用のテンプレートエンジンで、特定のフレームワークに依存せず使用することが可能です。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

2クリップ

投稿2022/07/21 11:58

前提

初心者です。input要素にある値すべてを保存して、ページ読込の際に
全て表示されるようにしたいのですが、詰まってしまいましたのでご教授いただければ幸いです。

実現したいこと

一時保存ボタンを押下時、値を保存する。
確定をtrueにするまで、再度画面を開いても保存した各値を表示させるようにする。

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

保存ができない状態
Uncaught SyntaxError: Unexpected token u in JSON at position 0 at JSON.parse (<anonymous>)

該当のソースコード

ソースコード <script type="text/javascript"> // 一時保存 function save() { let new_data = document.getElementById("inp").value; if(localStorage.getItem('data') == null) { localStorage.setItem('data', '[]'); } let old_data = JSON.parse(localStorage.getItem('data')); old_data.push(new_data); localStorage.setItem('data', JSON.stringify(old_data)); } function Load() { document.getElementById("inp").value = localStorage.getItem("text"); } html <body onLoad="Load();"> <form> <input type="reset" value="リセット"> <input type="button" value="行新規" id="add"> <input type="button" id="copy" value="行複製"> <input type="button" value="一時保存" onclick="save()"> <input type="button" value="確定" onclick="confirm('本当に確定しますか')"> <table id="tbl"> <thead class="thead-light"> <tr> <th class="th-width">氏名</th> <th class="th-width">担当地区</th> <th class="th-width">売上</th> <th class="th-width">保有顧客数</th> <th class="th-width">課</th> <th></th> </tr> </thead> <tbody id="data"> <tr id="tr1" th:each="dw, stat : ${division}" th:object="${editForm}"> <td><input type="text" name="user_name" id="inp"></td> <td><input type="text" name="place" id="inp"></td> <td><input type="text" name="sale" id="inp"></td> <td><input type="text" name="customer" id="inp"></td> <td><input type="text" name="division_name" id="inp"></td> <td><input type="button" value="削除" onclick="del()"></td> </tr> </tbody> </table> </form>

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

spring boot
eclipse2019イメージ説明

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

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

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

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

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

guest

回答1

0

エラーメッセージとコードが質問文の通りであるなら、localStorage の data アイテムにこのコードで書いたものではないデータが既に入っているのでしょう。

JSON.parse() が失敗したら既存の data アイテムは無視していいんじゃないでしょうか。

js

1try { 2 let old_data = JSON.parse(localStorage.getItem('data')); 3 old_data.push(new_data); 4 localStorage.setItem('data', JSON.stringify(old_data)); 5} catch (e) { 6 console.log(e); 7 localStorage.setItem('data', JSON.stringify([new_data])); 8}

投稿2022/07/21 13:08

int32_t

総合スコア20884

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問