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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

1155閲覧

動画の指定時間へジャンプしたい

seriko

総合スコア29

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2022/01/04 13:33

編集2022/01/05 04:11

お世話になっております。
javascriptで動画を見ながらメモを保存できるようなサイトを作成しています。その機能の一つにメモを保存した時間をクリックすると動画がその時間へジャンプするというものをつけたいです。
例えば、動画が10秒まで再生された時にメモを保存すると
「・0:10 メモ内容」
と保存され、この「0:10」をクリックすると自動で動画が10秒のところへ飛びます。
現在メモを保存するところまではできているのですが、メモを保存した時間へジャンプすることができていません。
正確にはジャンプすること自体はできているのですが、例えば動画の再生時間が2秒、5秒、9秒でそれぞれメモを保存すると2秒や5秒のところをクリックしても9秒、つまり1番新しくメモした時間へ飛ばされてしまいます。
保存した再生時間が上書きされないためにはどうしたら良いのでしょうか。わかりにくい文章で恐縮ですが、何卒ご教示いただけると幸いです。

以下は保存ボタンを押した時の処理です。

javascript

1// 保存ボタンを押した時 2 function save() { 3 var MemoData = document.form1.Memo.value;//htmlのフォームからメモデータを取得 4 memodata.push(MemoData);//配列に入れる 5 6 now = Math.floor(video.currentTime);//現在の再生時間を取得 7 second=now%60;//秒を取得 8 byou.push(second);//配列に入れる 9 minute=now/60;//分を取得 10 hun=Math.floor(minute); 11 minute2.push(hun);//配列に入れる 12 time.push(now);//現在の再生時間を配列に入れる 13 14 var text=[]; 15 for (var i = 0; i < memodata.length; i++) { 16 jikan=time[i]; 17 if(byou[i]<10){ 18 text.push('<li>'+ '<a href="javascript:move("+jikan+");">' + "【" + minute2[i] +":" +"0"+ byou[i]+ "】" +'</a>'+ memodata[i] + '</li>'); 19 }else{ 20 text.push('<li>'+ '<a href="javascript:move("+jikan+");">' + "【" + minute2[i] +":" + byou[i]+ "】" +'</a>'+ memodata[i] + '</li>'); 21 } 22 } 23 //innerHTMLを使用して表示 24 var txt = document.getElementById("txt"); 25 txt.innerHTML = text.join(''); 26 } 27 28 //保存された再生時間を押した時 29 function move(start) { 30 video.currentTime = start; 31 } 32

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

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

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

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

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

m.ts10806

2022/01/04 21:48

もうちょっと、インデントきちんと整形されたほうが。。 手動ではなくフォーマット機能のついたエディタか整形サービス使ってください。
seriko

2022/01/05 04:13

コメントありがとうございます。 インデントを修正しました。
m.ts10806

2022/01/05 04:17

ほとんど変わってないように見えます
guest

回答1

0

ベストアンサー

  1. for文でjikanにはvar/letを使ってませんので、saveを実行した後、jikanは一番最後に書かれた値になっております。なのでいつも9秒なのです。

  2. "javascript:move(jikan);"ではjikanは文字列です。なのでクリックした時点でのjikan変数がmove関数に渡されます。正確には"javascript:move("+jikan+");"のはずです。

投稿2022/01/05 01:50

skys215

総合スコア910

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

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

seriko

2022/01/05 04:07

回答ありがとうございます。 修正していただいた通りに text.push('<li>'+ '<a href="javascript:move("+jikan+");">' + "【" + minute2[i] +":" + byou[i]+ "】" +'</a>'+ memodata[i] + '</li>'); と書き直したのですがUncaught SyntaxError: Unexpected end of inputというエラーが出ます。 そもそもなぜjikan変数を+で囲むのかがわからないのでもしよろしければ教えていただけるとありがたいです。
skys215

2022/01/05 04:59

'<a href="javascript:move("+jikan+");">'ここが間違ってます '<a href="javascript:move('+jikan+');">'のはずです。 いや、+で囲むのではありません。jikanの値をmove(と)の間に入れるのです。 javascript:move(jikan);だと、htmlに表示されるのはjavascript:move(jikan);そのままです。 クリックした時点のjikanの値をmove関数に渡されます。 実際やりたいのはtext.pushした時点でのjikanの値なので、jikanの値をhtml表示すれば良いです。 つまり、'<a href="javascript:move("+jikan+");">'だと'<a href="javascript:move(157);">'とか'<a href="javascript:move(289);">'に表示されます。 <a href="javascript:move(jikan);">だと表示されるので、どこでも<a href="javascript:move(jikan);">と表示します。それでクリックした時、jikanが347であれば347がmoveに渡され、893であれば893を渡します。text.pushの時点のjikanの値ではありません。 jikanはfor文の中でletを使ってないので、for文の外でもjikanは使えます。開発者ツールのコンソールでjikanと入力すれば一番最後のメモ時間が出てくるはずです。なのでどのリンクをクリックしてもその時間にしか飛びません。
seriko

2022/01/05 05:53

修正したところ無事時間が上書きされずに動きました。htmlで表示すれば良かったのですね。 また、なぜ思うように動かなかったのかも理解できました。 本当に助かりました、ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問