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

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

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

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

HTML

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

Q&A

解決済

2回答

467閲覧

JSでフォーム入力した内容がリストに追加できない

hattositegoo

総合スコア2

JavaScript

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

HTML

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

0グッド

0クリップ

投稿2020/12/25 09:34

質問内容・実現したいこと

JavaScriptの独学者です。リストに新たな要素を追加するにあたり、ダイアログボックスを使った方法と、専用ページからの入力フォームを使った方法の2通りを実現するページを作ろうとしていますが、後者の結果が反映されません。どこに問題があるのかわからずに、あれこれコードを弄っているうちに、あっという間に何時間も過ぎてしまいました。大変レベルの低い質問で恐縮なのですが、どなたか下記コードの問題点をご指摘いただけますと幸いです。

index.html

HTML

1<!DOCTYPE html> 2<html> 3 <head> 4 <meta charset = "utf-8"> 5 <title>メイン</title> 6 <script src = "js/app.js"></script> 7 </head> 8 <body> 9 <h1 id="title">メインページ</h1> 10 <div> 11 <input type = "button" value = "login" onclick = "gate()"> 12 </div> 13 <div> 14 <ul id = "custom"> 15 <li>リスト3</li> 16 <li>リスト2</li> 17 <li>リスト1</li> 18 </ul> 19 </div> 20 <button type = "button" onclick = "addCustom()">ダイアログから追加</button> 21 22 <script> 23 //パスワード「kanri」でログインすると入力画面に遷移します。 24 function gate(){ 25 let UserInput = prompt("パスワードを入力して下さい。"); 26 if( /\W+/g.test(UserInput) ) { 27 alert("半角英数字のみを入力して下さい。"); 28 } 29 else if( UserInput != null ) { 30 location.href = UserInput + ".html"; 31 } 32 }; 33 </script> 34 </body> 35 </html> 36

kanri.html

HTML

1<!DOCTYPE html> 2<html> 3 <head> 4 <meta charset = "utf-8"> 5 <title>管理者用</title> 6 <script src = "js/jquery-3.5.1.min.js"></script> 7 <script src = "js/app.js"></script> 8 <style type = "text/css"> 9 h2{ 10 color: green; 11 } 12 </style> 13 </head> 14 <body> 15 <h2>リスト追加フォーム</h2> 16 <section> 17 <form action = "index.html" id="form"> 18 <input type = "text" name="word"> 19 <input type = "submit" value="フォームから追加"> 20 </form> 21 </section> 22 </body> 23</html>

app.js

JavaScript

1'use strict'; 2 3function addList(){ 4 let addL = window.prompt('追加項目を入力して下さい。'); 5 return addL; 6}; 7 8function addCustom(){ 9 const li = `<li>${addList()}</li>`; 10 document.getElementById('custom').insertAdjacentHTML('afterbegin', li); 11}; 12 13document.getElementById('form').onsubmit = function(){ 14 const lu = document.getElementById('form').word.value; 15 const le = `<li>${lu}</li>`; 16 document.getElementById('custom').insertAdjacentHTML('afterbegin', le); 17};

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

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

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

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

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

guest

回答2

0

ベストアンサー

index.htmlとkanri.htmlはそれぞれ独立しています。
app.jsという共通の部品を使っているからスコープも共有されるなんて事はありません。
script要素で読み込まれた内容は、あくまでhtml文書の一部として動作します。
ブラウザの開発ツールを使って、エラーメッセージを確認してみましょう。

投稿2020/12/25 10:22

AT_2nd

総合スコア266

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

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

hattositegoo

2020/12/25 13:53

AT_2ndさん ご回答に感謝します。ご助言の通り、開発ツールを見たらエラー箇所がわかりました。ここに書かれたメッセージを解読しながら、改めてJavaScriptの基本をしっかり勉強してみます。ありがとうございました。
guest

0

onsubmitでは、結局form入力した値を他ページのリストに加えることができなかったので、下記コードをindex.htmlに追加。URL.searchParamsで取得したURLのGetパラメーターをリストに加えることにより、何とか目的の結果を得ることができました。

<script> let params = (new URL(document.location)).searchParams; let word = params.get('word'); if(word != null){ const lii = `<li>${word}</li>`; document.getElementById('custom').insertAdjacentHTML('afterbegin', lii); }; </script>

投稿2021/01/02 02:19

hattositegoo

総合スコア2

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問