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

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

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

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

Q&A

解決済

3回答

10903閲覧

Javascriptでinputタグのvalueが取得できない

miSaito

総合スコア16

JavaScript

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

0グッド

0クリップ

投稿2020/06/10 00:06

前提・実現したいこと

javascript初学者です。現在、<input type="text" id="chat-input">で取得したvalueを<input type="button" value="SEND" id="chat-send">を押したらvalueが表示されるという実装を試みているのですが、なぜか入力したvalueが表示されず困っています。

html

1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <title>Document</title> 7 <link rel="stylesheet" type="text/css" href="practice.scss"> 8 <script type="text/javascript" src="practice.js"></script> 9</head> 10<body> 11 <div class="wrapper"> 12 <div class="contents"> 13 <input type="text" id="chat-input"> 14 <input type="button" value="SEND" id="chat-send"> 15 <ul> 16 </ul> 17 </div> 18 </div> 19</body> 20</html>

javascript

1window.onload= function (){ 2 var button = document.getElementById("chat-send"); 3 var input = document.getElementById("chat-input").value; 4 button.addEventListener("click", send); 5 function send () { 6 var element = document.createElement("p"); 7 var text = document.createTextNode(input); 8 document.body.appendChild(element).appendChild(text); 9 } 10}

自分で調べたことや試したこと

なぜかわからないのですが、jsファイルの3行目にあるvar input = document.getElementById("chat-input").value;の value の頭文字を大文字にして Value とすると下の画像のようにundefinedと出てしまいますが、一応表示されます。
イメージ説明

よろしくお願いいたします。

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

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

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

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

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

guest

回答3

0

.appendChild(element).appendChild(text);

appendChildは戻り値があるわけではないのでメソッドチェーンできません
またinputの位置もおかしそうです

javascript

1window.addEventListener('DOMContentLoaded', ()=>{ 2 var button = document.getElementById("chat-send"); 3 button.addEventListener("click", send); 4 function send () { 5 var input = document.getElementById("chat-input").value; 6 var element = document.createElement("p"); 7 var text = document.createTextNode(input); 8 element.appendChild(text); 9 document.body.appendChild(element); 10 } 11}); 12

リファクタリングするとこんなかんじ

javascript

1window.addEventListener('DOMContentLoaded', ()=>{ 2 document.querySelector("#chat-send").addEventListener("click",()=>{ 3 document.querySelector("body").appendChild( 4 [document.createTextNode( 5 document.querySelector("#chat-input").value 6 )].reduce( 7 (x,y)=>(x.appendChild(y),x),document.createElement("p") 8 ) 9 ) 10 }); 11});

投稿2020/06/10 00:18

編集2020/06/10 00:26
yambejp

総合スコア116724

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

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

m.ts10806

2020/06/10 00:26

個人的にはfunctionが中に入ってるのも気になったのですけど、要件次第ですかね?
m.ts10806

2020/06/10 00:27

あ、コード追記見ました。やはりそういうことですね。
guest

0

ベストアンサー

ボタンを押す前にvalue値を取得してるからですね
send関数の中に取得処理を入れてみてください

投稿2020/06/10 00:17

SakuBlade

総合スコア375

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

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

0

クリックしたときのvalueをとらないと意味がありません。

投稿2020/06/10 00:17

m.ts10806

総合スコア80875

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問