前提・実現したいこと
inputタグ(テキストボックス)
に任意のテキストを打ち込む
↓
追加するボタンを押すとdivタグ
に直接テキストとして表示
↓
別のテキストを打ち込み、再度追加ボタンを押すと
1個目のテキストの後ろに表示される
例)
- Helloと打ち込み、ボタンを押す → Hello
- (1のHelloを消して)新たにWorldと打ち込み、ボタンを押す → HelloWorld
発生している問題・エラーメッセージ
1回目の表示はうまくいくが
2回目以降の表示がうまくいかない
具体的には、2回目の追加ボタンを押すと
HelloHelloWorld
と表示されてしまう
該当のソースコード
html
1<!-- .valにテキストとして表示したい --> 2<div class="val"></div> 3<input type="text"> 4<div class="add">追加する</div>
JavaScript
1document.querySelector('input').onchange = function(){ 2 const inputValue = document.querySelector('input').value; 3 const addBtn = document.querySelector('.add'); 4 addBtn.addEventListener('click', function(){ 5 const div = document.querySelector('.val'); 6 div.append(inputValue); 7 }); 8}
試したこと
.valueで取得した値を
append()
,textContent
,innerHTML
で出力してみたが、どれもうまくいかなかった
console.log()で取得したinputタグの値を確認したところ、2回目以降は1個前までの値を重複して取得していることがわかったので、値の取得方法に何かしらの制限をかける必要がありそうだと思ったのですが、手詰まりとなってしまいました。
補足情報
素のJavaScriptで解決したいと考えています。
HTMLの記述に対する改善はあると思いますが、ひとまず今回の状況での解決方法やヒントをご教授いただけると幸いです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/18 02:42