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

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

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

ECMAScriptとは、JavaScript類の標準を定めるために作られたスクリプト言語です。

HTML5

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

JavaScript

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

HTML

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

Q&A

解決済

2回答

324閲覧

要素のテキストとカスタム属性の使い分け

Tubuanpan

総合スコア8

ECMAScript

ECMAScriptとは、JavaScript類の標準を定めるために作られたスクリプト言語です。

HTML5

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

JavaScript

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

HTML

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

0グッド

0クリップ

投稿2018/08/25 00:36

編集2018/08/25 00:43

###実現したいこと
ビデオプレイヤーのオリジナルUIを作っております。
再生速度を変更するボタンの実装なのですが、要素のテキストを使うか、カスタム属性を使うかで地味に悩んでいます。
どちらのコードが速度などで最適でしょうか?
この他にも最適解がございましたら、ご教示ください。

コード

HTML

1<div class="player"> 23 <video src="../img/movie1.mp4" class="player__video" id="video-src" preload="auto"></video> 45 <button class="video-speed-btn" data-video-speed="0.5">0.5</button> 6 <button class="video-speed-btn" data-video-speed="0.75">0.75</button> 7 <button class="video-speed-btn" data-video-speed="1.0">1</button> 8 <button class="video-speed-btn" data-video-speed="1.25">1.25</button> 9 <button class="video-speed-btn" data-video-speed="1.5">1.5</button> 10</div>

JavaScript

1const 2 video = document.getElementById('video-src'), 3 videoSpeedBtn = document.getElementsByClassName('video-speed-btn'); 4

####JavaScript 例1

Javascript

1for (let i = 0, len = videoSpeedBtn.length; i < len; i++) { 2 videoSpeedBtn[i].addEventListener('click', () => { 3 video.playbackRate = videoSpeedBtn[i].dataset.videoSpeed; 4 }, false); 5}

####JavaScript 例2

Javascript

1for (let i = 0, len = videoSpeedBtn.length; i < len; i++) { 2 videoSpeedBtn[i].addEventListener('click', () => { 3 video.playbackRate = videoSpeedBtn[i].textContent; 4 }, false); 5}

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

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

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

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

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

m.ts10806

2018/08/25 00:39

タイトルは質問内容が把握しやすい内容にしてください。またどちらのコードも問題なく、同様の結果が想定通り得られているということで良いでしょうか
Tubuanpan

2018/08/25 00:46

タイトル修正いたしました。同様の結果が想定通り得られているという事で問題ないです。
guest

回答2

0

すでにベストアンサーがでてしまっているようですが、質問文の2択ではカスタム属性がよいと考えます。
もし使い捨ての短いコードだったら要素のテキストでもよいと思います。

まず、速度については100ミリ秒以内のレスポンスであれば問題ありません。
おそらくどちらの方法をとっても1ミリ秒の違いも無いくらいではないかと思います。

速度以外に何を重視するかといえば、開発のしやすさです。
CSSのclass名(BEM)から察するにある程度の保守性を必要としているのではないかと思います。
要素のテキストはユーザの目に見えるものであるため外的要因による仕様変更の影響を受けやすくなっています。
例2は見た目の仕様変更があった場合、内部ロジックはその影響をダイレクトに受けることになってしまいます。

たとえば、ボタンに表示される文字列が「0.5」「1.0」「2.0」となっているのが見づらいと不評だったので「x0.5 ????」「x1.0 ????」「x2.0 ????」という表示に変えたくなったとします。

例2の場合であればJavaScriptコードを大幅に修正する必要があります。
結局は例1のような形にする必要がありますが、場合によってはすでに開発したデータベース側の都合で一筋縄ではいかない…といったことも考えられます。
一方、例1の場合であればHTMLコードを書き換えるだけで済みます。

投稿2018/08/25 11:51

reosablo

総合スコア339

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

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

Tubuanpan

2018/08/29 17:12 編集

回答ありがとうございます。具体的な説明とても分かり易かったです。 自分で速度計測してみましたが、確かにほとんど差はありませんでした。 保守性を考えて例1を採用することにしました。
guest

0

ベストアンサー

最適

私はこの手の質問で「結果」だけを追い求める事に意味はないと思います。
通常は「目的」があって、その目的が適う「最適解」を選びます。
しかし、この質問ではその目的が曖昧です。

再生速度を変更するボタンの実装なのですが、要素のテキストを使うか、カスタム属性を使うかで地味に悩んでいます。
どちらのコードが速度などで最適でしょうか?

速度などとは何ですか。
あなたが求める「最適」とは?
速度を求めるなら、element.click() してから処理完了までの時間を計測すればいいのでは?
両者にある性質をリストアップし、それらから最適解を導き出すことをしてみましたか。

前回の質問

正直なところ、前回の質問の回答で私は答えになっています。
最適か否かは別にして、私はどちらのコードも採用しません。

block scopeに辿り着いた理由も気になるところですが、どういう理由でそちらが「最適」だと判断したのでしょうか。

Re: Tubuanpan さん

投稿2018/08/25 01:03

編集2018/08/25 01:05
think49

総合スコア18162

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

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

Tubuanpan

2018/08/25 02:43 編集

回答ありがとうございます。 「速度など」と分かりにくく書いてしまいすいません。どちらが動作速度が早いかを知りたかったのですが、動作速度の計測は非常に手間がかかるものだと思っておりました。以外に簡単にできるようなので自分で計測してきます。 次に質問するときは、明確な目的を示し、わかりにくくならないよう気をつけます。本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問