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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

773閲覧

javascriptからtextarea内に文字をセットできない

takespring

総合スコア12

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/06/12 10:06

編集2020/06/13 01:52

textarea内で入力した文章をlocalStorageに保存して、保存したものをtextarea内に入れたいのですがコードが間違っているのかできません。理由と解決方法を教えてください。よろしくお願いします。

index.html

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <title>スケジュルアプリ</title> 7 <link rel="stylesheet" href="index.css"> 8</head> 9<body> 10  <span id="schedules"></span> 11 <table> 12 </table> 13 <script src="index.js"></script> 14</body> 15</html>

document.getElementById(scheduleat${name}).value = schedulesText;
の処理がうまくいっていないみたいです

index.js

1'use strict'; 2 3String.prototype.capitalize = function() { 4 return this.charAt(0).toUpperCase() + this.slice(1); 5}; 6 7const PERIODS_OF_A_DAY = [ 8 { name: "morning", label: "朝" }, 9 { name: "noon", label: "昼" }, 10 { name: "night", label: "夜" } 11]; 12 13function reload() { 14 const schedulesText = PERIODS_OF_A_DAY.map(({ name }) => 15 localStorage.getItem(`ScheduleAt${name.capitalize()}`) 16 ).join(''); 17 document.getElementById(`scheduleat${name}`).value = schedulesText; 18} 19 20function save(name) { 21 const value = document.getElementById(`scheduleat${name}`).value; 22 const key = `ScheduleAt${name.capitalize()}`; 23 localStorage.setItem(key, value); 24 reload(); 25} 26 27const tableRow = ({name, label}) => 28 `<tr> 29 <th>${label}</th> 30 <td><textarea id="scheduleat${name}" cols="30" rows="3"></textarea></td> 31 <td><input type="button" value="保存${label}" onclick="save('${name}')" ></td> 32 </tr>`; 33 34document.addEventListener('DOMContentLoaded', function() { 35 const table = document.querySelector('table'); 36 table.innerHTML = PERIODS_OF_A_DAY.map(tableRow).join(''); 37 reload(); 38});

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

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

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

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

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

kei344

2020/06/14 03:17

まだ質問が「受付中」になっていますが、いったん「解決済」にされてはいかがでしょうか。また、解決されていないなら状況を質問文に追記ください。
guest

回答1

0

ベストアンサー

そもそも schedulesText が「全ての予定をまとめたテキスト」になっているので、根本的に考えなおしたほうがよいと思います。
localStorageにキーとの対応として入れるより、スケジュールデータの配列をJSON文字列にして入れたほうが管理しやすいと思います。

js

1function reload() { 2 const schedulesText = PERIODS_OF_A_DAY.map(/**/).join(''); 3 // ↓ 定義していない(mapに渡した関数内のものにはアクセスできない) 4 document.getElementById(`scheduleat${name}`).value = schedulesText; 5}

投稿2020/06/12 12:17

kei344

総合スコア69407

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

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

takespring

2020/06/13 01:50

お答えいただきありがとうございます。ですが document.getElementById(scheduleat${name}).value = schedulesText; の部分を document.getElementById('schedules').textContent = schedulesText; とするとしっかり一つ一つのコメントを取得できるのです。これのidをただ scheduleat${name}に変更しただけなのになぜか取得できません。
kei344

2020/06/13 03:08

mapに渡している関数の仮引数に使われている「name」はその関数内でしか参照できません。 やるならこう。 PERIODS_OF_A_DAY.forEach(({ name }) => {document.getElementById(`scheduleat${name}`).value = localStorage.getItem(`ScheduleAt${name.capitalize()}`);})
takespring

2020/06/14 01:21

理解することができました。本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問