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

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

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

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

Q&A

解決済

2回答

2611閲覧

input要素のtime型の値を取得した後に、加算する方法

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

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

0グッド

0クリップ

投稿2021/09/20 05:26

input要素にて、
name='stime'の値を取得して+1時間後の値を、
name='etime'に代入したいです。

javascriptにてコードを書いたのですが、
name='stime'の値は取得できたのですが、
ここからの時刻の加算が分かりません。

最終的には、
name='stime'の値が入力される度に
name='etime'が変化するものを実装したいと思います。

アドバイス頂ければ幸いです。
どうぞよろしくお願い致します。

html

1<input type='time' name='stime' value='09:00' id="stime"> 2<input type='time' name='etime' value='10:00' id="etime">

javascript

1var sTime = document.getElementById("stime").value; 2console.log(sTime); 3//09:00

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

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

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

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

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

guest

回答2

0

すんまへん。便利なもん使うて楽させてもらいますぅ。

javascript

1const [stimeInput, etimeInput] = document.getElementsByTagName('input'); 2 3stimeInput.addEventListener('change', ({ target: { value } }) => { 4 etimeInput.value = dayjs(value, 'HH:mm').add(1, 'hour').format('HH:mm'); 5});

サンプル

投稿2021/09/20 06:22

編集2021/09/20 06:24
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2021/09/20 08:13

ありがとうございます。 さっそく実装してみましたが、 エラーが発生しました。 もし原因がわかれば教えてくださいぅ。 エラー: The specified value "Invalid Date" does not conform to the required format. The format is "HH:mm", "HH:mm:ss" or "HH:mm:ss.SSS" where HH is 00-23, mm is 00-59, ss is 00-59, and SSS is 000-999. コード: document.addEventListener('DOMContentLoaded', function() { const stimeInput = document.getElementById("stime"); const etimeInput = document.getElementById("etime"); stimeInput.addEventListener('change', ({ target: { value } }) => { etimeInput.value = dayjs(value, 'HH:mm').add(1, 'hour').format('HH:mm'); }); });
退会済みユーザー

退会済みユーザー

2021/09/20 08:57

dayjs で HH:mm 形式の時刻の文字列をパースさせるには、 CustomParseFormat https://day.js.org/docs/en/plugin/custom-parse-format というプラグインが必要なのですが、これを追加していないか、または、プラグインの追加設定がうまくいっていないかもしれません。 ちなみに、回答に載せたサンプルで、一行目に dayjs.extend(dayjs_plugin_customParseFormat); としているのが設定で、dayjs_plugin_customParseFormat という変数を使うためにdayjs本体 https://unpkg.com/dayjs@1.8.21/dayjs.min.js だけではなく、 https://unpkg.com/dayjs@1.8.21/plugin/customParseFormat.js をCDNから読み込んでいます。
退会済みユーザー

退会済みユーザー

2021/09/20 13:24

教えていただきありがとうございました。 >https://unpkg.com/dayjs@1.8.21/plugin/customParseFormat.js を追加で読み込んだら上手くできました。 新しい視点をご丁寧に回答いただき、 本当にありがとうございました。 勉強になりました。
guest

0

ベストアンサー

基本的には、stime 要素 input イベントか change イベントで stime 要素の valueAsNumber (valueではありません) に 60 * 60 * 1000 を足して etime 要素の valueAsNumber にセットすれば良いでしょう。

ユーザはstime要素の値を消して空の状態することができるので、そのへんの対処もする必要があります。そのケースは、stime 要素の value が空文字列、またはstime要素のvalueAsNumberNaN で判定することができます。

投稿2021/09/20 12:51

int32_t

総合スコア21695

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

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

退会済みユーザー

退会済みユーザー

2021/09/20 13:25

教えていただき誠にありがとうございます。 以下のコードで実装できました。 stime.addEventListener('change', (event) => { var sTime = document.getElementById("stime").valueAsNumber; var eTime = sTime +(60 * 60 * 1000); document.getElementById("etime").valueAsNumber = eTime; }); 空の状態の対処は、 これから考えます。 ご丁寧に教えていただき 誠にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問