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

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

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

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

Q&A

解決済

1回答

246閲覧

"," expected等のエラーを解消し、ページの読み込み時に文字が1文字ずつ表示されるにしたい。

lilliveon

総合スコア9

JavaScript

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

0グッド

0クリップ

投稿2023/05/19 08:41

編集2023/05/19 09:35

実現したいこと

"," expected等のエラーを解消し、ページの読み込み時に文字を1文字ずつ表示したい。

前提

id="quiz"にある文章を、1秒毎に1文字ずつに表示したいです。
(例)"おはようございます"という文字を表示するとしたら、まず「お」を表示させて、1秒後に「は」、2秒後に「よ」...8秒後に「す」を表示。

何かアドバイスいただけると嬉しいです。

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

イメージ説明

該当のソースコード

wordtest2.html

1<!DOCTYPE html> 2<html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <title>Document</title> 8 </head> 9 <body onload="myFunction()"> 10 <p id="quiz">ここに文字が順に表示されていきます</p> 11 </body> 12 <script> 13 function myFunction(){ 14 let arr = document.getElementById("quiz").innerText 15 let count = 0 16 const timerId = setInterval(dis(arr,count){ 17 count = count + 1 18 if(count == arr.length){ 19 clearInterval(timerId); 20 } 21 },1000); 22 } 23 24 function dis(arr,count){ 25 document.write(arr[count]) 26 } 27 </script> 28</html>

試したこと

エラーからは","が足りない等が推測できますが、どの部分に入れればいいかが分かりません。

・setInterval()の説明サイト
https://developer.mozilla.org/ja/docs/Web/API/setInterval
・clearInterval()の説明サイト
https://developer.mozilla.org/ja/docs/Web/API/clearInterval
・setInterval()とclearInterval()を利用したサンプルが載っているサイト
https://pisuke-code.com/js-stoo-or-resume-setinterval/

以上の3つや他の色々なサイトを見たのですが解決方法が分かりませんでした。

【補足】
説明不足で申し訳ございません。
1度表示した文字は消えないようにお願いしたいです。
(例)「おはようございます」の「お」を表示してから「す」まで表示し終わった際、今まで表示した「おはようございます」が全て残ったままにしていただきたいです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

こんな感じで

javascript

1<script> 2window.addEventListener('DOMContentLoaded', ()=>{ 3 const ans="おはようございます"; 4 let count = 0; 5 const timerId = setInterval(()=>{ 6 quiz.textContent=ans.substr(count,1); 7 count++; 8 if(count >= ans.length){ 9 clearInterval(timerId); 10 } 11 },1000); 12}); 13</script> 14<p id="quiz"></p>

投稿2023/05/19 09:16

yambejp

総合スコア114968

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

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

lilliveon

2023/05/19 09:35 編集

大変申し訳ございません。説明不足でした。 【補足】にて追記させていただきましたが、1度表示した文字は消えず、最終的には文章が全て表示されている状態にしたいです。
yambejp

2023/05/19 09:44

失礼、読み間違えていました quiz.textContent=ans.substr(count,1); を quiz.textContent=ans.substr(0,count+1); にするとご希望の仕様になると思います
lilliveon

2023/05/19 09:49

無事解決いたしました。 ご回答いただきありがとうございました🙇
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問