\r\n \r\n
\r\n
\r\n 戻る\r\n

\r\n
\r\n
\r\n memo1:\r\n

\r\n
\r\n
\r\n memo2:\r\n

\r\n
\r\n\r\n \r\n
\r\n \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n```\r\n```js\r\n///// Save memo and return to top page 入力→保存→関数内に記述された addMemo() 関数 ( memo.js ファイルで定義 ) を経由して、localStorage に入力テキストが保存 更新された一覧をトップページ上に表示\r\nfunction onSaveBtn() {\r\n var text = $(\"#Memo\").val();\r\n if (text != '') {\r\n // Save to local storage\r\n addMemo(text);\r\n // Clear form\r\n $(\"#Memo\").val(\"\");\r\n // Initialize top page\r\n initTopPage();\r\n }\r\n $.mobile.changePage(\"#TopPage\", { reverse: true });\r\n}\r\n\r\n///// Initialize top page アプリを起動→保存されている記事を取得して、一覧で表示\r\nfunction initTopPage() {\r\n $(\"#TopListView\").empty();\r\n \r\n var list = getMemoList();\r\n for (var i in list) {\r\n var memo = list[i];\r\n var d = new Date(memo.time);\r\n var date = d.getFullYear() + \"/\" + (d.getMonth() + 1) + \"/\" + d.getDate();\r\n \r\n $li = $(\"
  • Delete
  • \");\r\n $li.data(\"id\", memo.id);\r\n $li.find(\"h3\").text(date);\r\n $li.find(\"p\").text(memo.text);\r\n $(\"#TopListView\").prepend($li);\r\n }\r\n if (list.length == 0) {\r\n $li = $(\"
  • 記事がありません
  • \");\r\n $(\"#TopListView\").prepend($li);\r\n }\r\n $(\"#TopListView\").listview(\"refresh\"); // Call refresh after manipulating list\r\n}\r\n\r\n///// Move to detail page 選択した記事の詳細閲覧ページ\r\nfunction onShowLink() {\r\n var $li = $(this).parent();\r\n var memoTitle = $li.find(\"h3\").text();\r\n var memoHtml = $li.find(\"p\").html().replace(/\\n/g, \"
    \");\r\n \r\n $(\"#ShowPage h1\").text(memoTitle);\r\n $(\"#ShowPage p\").html(memoHtml);\r\n $.mobile.changePage(\"#ShowPage\");\r\n}\r\n\r\n///// Delete memo バツボタン→削除\r\nfunction onDeleteLink() {\r\n if (!confirm(\"この記事を削除しますか?\")) {\r\n return;\r\n }\r\n var $li = $(this).parent();\r\n var id = $li.data(\"id\");\r\n deleteMemo(id);\r\n \r\n initTopPage();\r\n \r\n // Return to top\r\n $.mobile.changePage(\"#TopPage\", { reverse: true });\r\n}\r\n\r\n///// Called when app launch\r\nfunction onReady() {\r\n initTopPage();\r\n $(\"#SaveBtn\").click(onSaveBtn);\r\n $(\"#TopListView\").on(\"click\", \"a.show\", onShowLink);\r\n $(\"#TopListView\").on(\"click\", \"a.delete\", onDeleteLink);\r\n}\r\n\r\n$(onReady); // on DOMContentLoaded\r\n```\r\n```js\r\n///// このファイルはlocalStorage に対する一連のデータ処理を行うための JavaScript ファイル\r\n///// localStorage に保存された記事の一覧を取得\r\nfunction getMemoList() {\r\n var list = localStorage.getItem(\"memo_list\");\r\n if (list == null) {\r\n return new Array();\r\n } else {\r\n return JSON.parse(list);\r\n }\r\n}\r\n \r\n///// 一覧を localStorage に保存\r\nfunction saveMemoList(list) {\r\n try {\r\n localStorage.setItem(\"memo_list\", JSON.stringify(list));\r\n } catch (e) {\r\n alert('Error saving to storage.');\r\n throw e;\r\n }\r\n}\r\n\r\n///// 新規の記事を一覧に追加して、localStorage に新規の一覧を保存\r\nfunction addMemo(text) {\r\n var list = getMemoList();\r\n var time = new Date().getTime();\r\n list.push({ id: time, time: time, text: text });\r\n saveMemoList(list);\r\n}\r\n\r\n///// 一覧から指定された記事を削除して、localStorage に削除後の一覧を保存\r\nfunction deleteMemo(id) {\r\n var list = getMemoList();\r\n for (var i in list) {\r\n if (list[i].id == id) {\r\n list.splice(i, 1);\r\n break; // Quit for loop when found\r\n }\r\n }\r\n saveMemoList(list);\r\n}\r\n```\r\n###試したこと\r\nhttps://docs.monaca.io/ja/sampleapp/samples/memo_application/\r\nで言うmemo.jsファイルを複数作り値を変えてみたものの、1つテキストボックスに入力した同じ内容が複数回表示されてしまいました。\r\n\r\n###補足情報(言語/FW/ツール等のバージョンなど)\r\nプログラミング初心者でjavascriptを勉強中です。基本的な質問で恐縮ですが、アドバイス等いただけると幸いです。よろしくお力添えのほどお願い申し上げます。","answerCount":1,"upvoteCount":0,"datePublished":"2017-10-11T05:59:17.120Z","dateModified":"2022-01-12T10:55:45.698Z","suggestedAnswer":[{"@type":"Answer","text":"勉強ということなので、答えは載せずに個人的な指針だけ示しておきます。(他にもやり方はたくさんあると思います)\r\n\r\n(1)htmlの#AddPage内にtextareaを追加\r\n(2)app.jsのonSaveBtn関数で(1)で追加したtextareaの情報を取得できるようにして、\r\nmemo.jsのaddMemo関数に渡す。\r\n(3)addMemoで複数テキストをlistにプッシュできるようにする。\r\n----ここまでで保存はできるようになるはず。(JSON形式から逸脱さえしなければ)\r\n\r\n(4)app.jsのinitTopPage関数でリストにテキストを出せるようにする。(TOPページの対応)\r\n⇒詳細ページに表示されるのは現状Topページに表示されたテキストがほぼそのまま表示される(onShowLink関数の処理)ので、\r\nTopページのリストの表示を工夫するか、詳細ページを表示する際に書き換えるような仕組みが必要。","dateModified":"2017-10-14T02:55:35.089Z","datePublished":"2017-10-14T02:55:35.089Z","upvoteCount":0,"url":"https://teratail.com/questions/95857#reply-149239","comment":[]}],"breadcrumb":{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"トップ","url":"https://teratail.com"},{"@type":"ListItem","position":2,"name":"JavaScriptに関する質問","url":"https://teratail.com/tags/JavaScript"},{"@type":"ListItem","position":3,"name":"JavaScript","url":"https://teratail.com/tags/JavaScript"}]}}}
    質問するログイン新規登録
    JavaScript

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

    Monaca

    「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

    Q&A

    1回答

    894閲覧

    複数のメモを一度に記入・保存・表示する方法

    masayu

    総合スコア6

    JavaScript

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

    Monaca

    「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

    0グッド

    0クリップ

    投稿2017/10/11 05:59

    0

    0

    ###前提・実現したいこと

    Monaca Docs のサンプルアプリ&テンプレートにある、
    メモ帳アプリ(localStorage を使用して、メモ帳アプリを作成するサンプルアプリ)を参考にjavascriptを勉強しながらオリジナルアプリを作っています。
    ↓こちらが参考にしたページです。
    https://docs.monaca.io/ja/sampleapp/samples/memo_application/

    メモ帳アプリではメモ欄が1つだけですが、オリジナルアプリではメモ欄を複数作り、保存・表示できるようにしたいと考えています。

    ###発生している問題・エラーメッセージ
    現在、複数のメモ欄自体はhtml上で作成できるのですが、複数のtextに記入したメモを表示・保存することができません。

    html

    1<!DOCTYPE HTML> 2<html> 3<head> 4 <meta charset="utf-8"> 5 <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, maximum-scale=1, user-scalable=no"> 6 <meta http-equiv="Content-Security-Policy" content="default-src * data:; style-src * 'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'"> 7 <link rel="stylesheet" href="components/loader.css"> 8 <link rel="stylesheet" href="css/style.css"> 9</head> 10<body> 11 12 <!-- 記事の 記入・削除・閲覧ページ --> 13 <div data-role="page" id="TopPage"> 14 <header data-role="header" data-position="fixed" data-theme="c"> 15 <h2>一覧</h2> 16 <a href="#AddPage" data-icon="plus" class="ui-btn-right">記入</a> 17 </header> 18 <section data-role="content"> 19 <ul id="TopListView" data-role="listview" data-collapsed-icon="arrow-r" data-expanded-icon="arrow-d" data-split-icon="delete"> 20 </ul> 21 </section> 22 </div> 23 24 <!-- 記入ページ --> 25 <div data-role="page" id="AddPage"> 26 <header data-role="header" data-position="fixed" data-theme="c"> 27 <a data-role="button" data-rel="back" data-icon="back">戻る</a> 28 <h1>記入ページ</h1> 29 </header> 30 <section data-role="content"> 31 <label for="Memo">Memo:</label> 32 <textarea id="Memo"></textarea> 33<a data-role="button" data-icon="check" id="SaveBtn">保存する</a> 34</section> 35 </div> 36 37 <!-- 選択した記事の詳細を閲覧するページ --> 38 39 <script> 40 //選択したチェックボックスの値を呼び出すためのjs 41 //テキスト保存 42 function SaveKeyValue() { 43 if (window.localStorage != null) { 44 key = document.forms.form1.Text_key.value; 45 value = document.forms.form1.Text_value.value; 46 47 window.localStorage.setItem(key, value); 48 } 49 } 50 51 //テキスト読み込み 52 function LoadKeyValue() { 53 if (!window.localStorage != null) { 54 key = document.forms.form1.Text_Key.value; 55 value = window.localStorage.getItem(key) 56 document.forms.form1.Text_value.value; 57 } 58 } 59 60 </script> 61 62 <div data-role="page" id="ShowPage"> 63 <header data-role="header" data-position="fixed" data-theme="c"> 64 <a data-role="button" data-rel="back" data-icon="back">戻る</a> 65 <h1></h1> 66 </header> 67 <section section data-role="content"> 68 <b><u>memo1</u>:</b> 69 <p></p> 70 </section> 71 <section section data-role="content"> 72 <b><u>memo2</u>:</b> 73 <p></p> 74 </section> 75 76 77 </div> 78 79<script src="components/loader.js"></script> 80<script src="js/memo.js"></script> 81<script src="js/app.js"></script> 82<script src="js/cssua.min.js"></script> 83</body> 84</html> 85

    js

    1///// Save memo and return to top page 入力→保存→関数内に記述された addMemo() 関数 ( memo.js ファイルで定義 ) を経由して、localStorage に入力テキストが保存 更新された一覧をトップページ上に表示 2function onSaveBtn() { 3 var text = $("#Memo").val(); 4 if (text != '') { 5 // Save to local storage 6 addMemo(text); 7 // Clear form 8 $("#Memo").val(""); 9 // Initialize top page 10 initTopPage(); 11 } 12 $.mobile.changePage("#TopPage", { reverse: true }); 13} 14 15///// Initialize top page アプリを起動→保存されている記事を取得して、一覧で表示 16function initTopPage() { 17 $("#TopListView").empty(); 18 19 var list = getMemoList(); 20 for (var i in list) { 21 var memo = list[i]; 22 var d = new Date(memo.time); 23 var date = d.getFullYear() + "/" + (d.getMonth() + 1) + "/" + d.getDate(); 24 25 $li = $("<li><a href='#' class='show'><h3></h3><p></p></a><a href='#' class='delete'>Delete</a></li>"); 26 $li.data("id", memo.id); 27 $li.find("h3").text(date); 28 $li.find("p").text(memo.text); 29 $("#TopListView").prepend($li); 30 } 31 if (list.length == 0) { 32 $li = $("<li>記事がありません</li>"); 33 $("#TopListView").prepend($li); 34 } 35 $("#TopListView").listview("refresh"); // Call refresh after manipulating list 36} 37 38///// Move to detail page 選択した記事の詳細閲覧ページ 39function onShowLink() { 40 var $li = $(this).parent(); 41 var memoTitle = $li.find("h3").text(); 42 var memoHtml = $li.find("p").html().replace(/\n/g, "<br>"); 43 44 $("#ShowPage h1").text(memoTitle); 45 $("#ShowPage p").html(memoHtml); 46 $.mobile.changePage("#ShowPage"); 47} 48 49///// Delete memo バツボタン→削除 50function onDeleteLink() { 51 if (!confirm("この記事を削除しますか?")) { 52 return; 53 } 54 var $li = $(this).parent(); 55 var id = $li.data("id"); 56 deleteMemo(id); 57 58 initTopPage(); 59 60 // Return to top 61 $.mobile.changePage("#TopPage", { reverse: true }); 62} 63 64///// Called when app launch 65function onReady() { 66 initTopPage(); 67 $("#SaveBtn").click(onSaveBtn); 68 $("#TopListView").on("click", "a.show", onShowLink); 69 $("#TopListView").on("click", "a.delete", onDeleteLink); 70} 71 72$(onReady); // on DOMContentLoaded

    js

    1///// このファイルはlocalStorage に対する一連のデータ処理を行うための JavaScript ファイル 2///// localStorage に保存された記事の一覧を取得 3function getMemoList() { 4 var list = localStorage.getItem("memo_list"); 5 if (list == null) { 6 return new Array(); 7 } else { 8 return JSON.parse(list); 9 } 10} 11  12///// 一覧を localStorage に保存 13function saveMemoList(list) { 14 try { 15 localStorage.setItem("memo_list", JSON.stringify(list)); 16 } catch (e) { 17 alert('Error saving to storage.'); 18 throw e; 19 } 20} 21 22///// 新規の記事を一覧に追加して、localStorage に新規の一覧を保存 23function addMemo(text) { 24 var list = getMemoList(); 25 var time = new Date().getTime(); 26 list.push({ id: time, time: time, text: text }); 27 saveMemoList(list); 28} 29 30///// 一覧から指定された記事を削除して、localStorage に削除後の一覧を保存 31function deleteMemo(id) { 32 var list = getMemoList(); 33 for (var i in list) { 34 if (list[i].id == id) { 35 list.splice(i, 1); 36 break; // Quit for loop when found 37 } 38 } 39 saveMemoList(list); 40}

    ###試したこと
    https://docs.monaca.io/ja/sampleapp/samples/memo_application/
    で言うmemo.jsファイルを複数作り値を変えてみたものの、1つテキストボックスに入力した同じ内容が複数回表示されてしまいました。

    ###補足情報(言語/FW/ツール等のバージョンなど)
    プログラミング初心者でjavascriptを勉強中です。基本的な質問で恐縮ですが、アドバイス等いただけると幸いです。よろしくお力添えのほどお願い申し上げます。

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

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

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

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

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

    Lhankor_Mhy

    2017/10/13 06:05

    『値を変えてみた』とは、具体的には、どの値をどのように変えたのでしょうか。
    guest

    回答1

    0

    勉強ということなので、答えは載せずに個人的な指針だけ示しておきます。(他にもやり方はたくさんあると思います)

    (1)htmlの#AddPage内にtextareaを追加
    (2)app.jsのonSaveBtn関数で(1)で追加したtextareaの情報を取得できるようにして、
    memo.jsのaddMemo関数に渡す。
    (3)addMemoで複数テキストをlistにプッシュできるようにする。
    ----ここまでで保存はできるようになるはず。(JSON形式から逸脱さえしなければ)

    (4)app.jsのinitTopPage関数でリストにテキストを出せるようにする。(TOPページの対応)
    ⇒詳細ページに表示されるのは現状Topページに表示されたテキストがほぼそのまま表示される(onShowLink関数の処理)ので、
    Topページのリストの表示を工夫するか、詳細ページを表示する際に書き換えるような仕組みが必要。

    投稿2017/10/14 02:55

    kentei_syunrai

    総合スコア946

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

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

    あなたの回答

    tips

    太字

    斜体

    打ち消し線

    見出し

    引用テキストの挿入

    コードの挿入

    リンクの挿入

    リストの挿入

    番号リストの挿入

    表の挿入

    水平線の挿入

    プレビュー

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

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

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

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

    ただいまの回答率
    85.29%

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

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

    質問する

    関連した質問