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

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

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

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

Q&A

1回答

1861閲覧

セリフの表示が終わったら次のページへ飛ぶリンクをつけたい

tiegr_0196

総合スコア13

JavaScript

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

1グッド

1クリップ

投稿2017/02/03 05:02

###ヘディングのテキスト
スマートフォンゲームのチュートリアルなどでよくある、キャラクターがセリフを喋っているように文字が1つずつ表示され、段落の表示が終わったら右下に矢印が表示され、次の段落文章が表示されるプログラムを作りたく思っています。

先日こちらでご指導いただき、現在以下の状態で
①文章を1文字ずつ表示する
②段落の文章が表示されたら右下に矢印が出る
までは希望通り動いております。

今回は、以下のサンプルで「セリフ3(最終段落)」が表示され終わった時のみ、<a href="">で別のページへ遷移できるようにしたく思います。(セリフ1の時はセリフ2へ、セリフ2の時はセリフ3へ)

よろしくご指導のほどお願い致します。

html

1 <section id="contents"> 2 3 <div id="serif_box"> 4 <p id="serif" data-text="[&quot;セリフ1&quot;,&quot;セリフ2&quot;,&quot;セリフ3&quot;]" data-textindex="-1"> 5 </p> 6 <img id="next_tuto" class="serif_bt" src="/img/serif_bt.png" hidden> 7 </div> 8 9 </section>

javascript

1'use strict'; 2document.getElementById('next_tuto').addEventListener('click', { 3 textElement: document.getElementById('serif'), 4 viewText: function viewText () { 5 setTimeout(function handleTimeout (element) { 6 var textList = JSON.parse(element.getAttribute('data-text')), 7 listIndex = +element.getAttribute('data-textindex'), 8 text = element.textContent, 9 originalText = textList[listIndex], 10 textLen = text.length + 1; 11 12 element.textContent = originalText.slice(0, textLen); 13 14 if (originalText.length > textLen) { 15 setTimeout(handleTimeout, 18, element); 16 } else { 17 this.document.getElementById('next_tuto').hidden = false; 18 } 19 }, 200, this.textElement); 20 }, 21 handleEvent: function handleClick (event) { 22 var element = this.textElement, 23 textList = JSON.parse(element.getAttribute('data-text')); 24 25 element.setAttribute('data-textindex', (+element.getAttribute('data-textindex') + 1) % textList.length); 26 element.textContent = ''; 27 this.viewText(); 28 } 29}, false); 30document.getElementById('next_tuto').click();
nnahito👍を押しています

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

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

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

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

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

guest

回答1

0

aタグ差し込んで{display:none;}つけて最後のセリフの表示がおわったらcallbackで{display:block;}つければいいとおもいます。

差し出がましいかもしれませんがstrictモードを使うのであればletとconstだけでも明確に定義すると幸せになれると思います。

投稿2017/02/03 05:34

Neko_doshi

総合スコア214

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

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

tiegr_0196

2017/02/03 05:40

回答ありがとうございました。 ご丁寧にありがとうございます。 まだご指摘の意味が理解できない個所がございますので勉強致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問