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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

Q&A

解決済

1回答

1399閲覧

テキストボックスに入力した文章を、ボックス外に一文字ずつ二秒ごとに増やして表示したい

saori-t

総合スコア11

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

0グッド

0クリップ

投稿2019/07/05 23:13

前提・実現したいこと

javascriptで、【テキストボックスに入力した文章を、ボックス外に一文字ずつ二秒ごとに増やして表示する】処理がしたいです。
可能であれば、基本的にこの形を残したまま実現したいのですが、いかがでしょうか。
宜しくお願いいたします。

発生している問題・エラーメッセージ

cleateElement要素を入れると文章全体が二秒ごとに表示されてしまうが、入れないと表示そのものがされない。
というより、function view_second内のif文が効いていないようです。

該当のソースコード

<!DOCTYPE html> <html lang = "ja"> <head> <meta charset = "utf-8"> <title>課題中級</title> <script> //テキストボックスに文字を入力しボタンをクリックする //入力された文字が文字が2秒ごとに先頭から1文字ずつ順番に //表示されるプログラムを作成する var counter=1;
function view_second() { var element_p = document.createElement('p'); var str = document.getElementById('str').value; element_p.innerHTML = str.value; var box = document.getElementById('box');

         box.appendChild(element_p);
var i =0;
if(counter <= str.length){
box.innnerHTML = str.substring(0,counter);
counter++;
}//ここのif文が意味ない?

} function timing(){ setInterval(view_second,2000); } window.onload = function () { var neon = document.getElementById('neon'); neon.addEventListener('click',timing,false); } </script> </head> <body> <input type="text" id="str" value="順番に文字を表示"> <button id="neon">1文字ずつ表示</button> <div id="box"></div> </body>
</html>

試したこと

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

setIntervalをどうやって止める気なのかわかりませんが

JavaScript

1var counter=0; 2 3function view_second() { 4 var str = document.getElementById('str').value; 5 if(counter <= str.length){ 6 var element_p = document.createElement('p'); 7 element_p.innerHTML = str.substring(counter, counter +1); 8 9 var box = document.getElementById('box'); 10 box.appendChild(element_p); 11 counter++; 12 } 13}

まぁちゃんとやるならfunction timing()内でカウンタが必要な回数だけ回ったらclearInterval呼び出すべきだと思います。

あと2回以上クリックした場合どうするのとか。特に1回目の処理中。
そのへんはご自分で考えて下さい。(どうせ学校の課題とかだと思うので)

投稿2019/07/05 23:27

編集2019/07/05 23:31
gentaro

総合スコア8949

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

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

saori-t

2019/07/06 00:09

いただいたコードを元に、課題の指示通りの表現をすることができました。ありがとうございます。 clearIntervalなどほかの処理についても、勉強して追記したいと思います。ご教授感謝致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問