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

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

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

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

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

HTML

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

Q&A

解決済

3回答

2090閲覧

「要素クリックで画面遷移」のよりよい書き方

maki_k

総合スコア17

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

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

HTML

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

1グッド

0クリップ

投稿2019/02/05 17:21

編集2019/02/06 00:50

初歩的な質問で恐縮なのですが、理由が明確に言語化できず、もやもやしています。

trをクリックした際に、(hoge/:id)に遷移する、という要件があるとします。

html

1<!-- #1 --> 2<tr onclick="window.location='hoge/1'">...</tr>

html

1<!-- #2 --> 2<tr data-href="hoge/1">...</tr> 3... 4<script> 5 $('tr[data-href]').on('click', function(){ 6 window.location = $(this).attr('data-href'); 7 }); 8</script>

上記のどちらでも実現はできますが、#2のほうが、感覚的によいのでは?と感じています。
ただ、あくまでも感覚で、それが何故なのかを言語化できずにもやもやしています。
#1、#2のどちらかのほうがよい理由、あるいはどちらでも構わない理由に関して、
知見を伺えますと幸いです。


編集リクエストを頂いたので、(:id)に関して追記を致します。

erb

1<table> 2 <% fugas.each do |fuga| %> 3 <%= content_tag('tr', data: {href: hoge_path(fuga.id)}) do %> 4 ... 5 <% end %> 6 <% end %> 7</table>

Ruby(Rails)にはなるのですが、idは動的に決まるというイメージです。

どうぞよろしくお願いいたします。

退会済みユーザー👍を押しています

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

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

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

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

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

m.ts10806

2019/02/06 00:09

その:idはどのように決まるのでしょうか。上から連番でしょうか。 もう少し構造がわかるHTMLをご提示ください。
m.ts10806

2019/02/06 00:10

※正直どちらでも要件満たせていて問題ないので回答しづらいのは確かです
m.ts10806

2019/02/06 00:48

Ruby On Railsをタグに追加しておいてください。
guest

回答3

0

ベストアンサー

相違点がいくつかあるので、そこは分けて考えるべきかな、とは思いますが、個人的にはonclick属性の使用には消極的です。

Only one onclick handler can be assigned to an object at a time. You may prefer to use the EventTarget.addEventListener() method instead, since it's more flexible.

GlobalEventHandlers.onclick - Web APIs | MDN

勝手訳「onclickハンドラは一つのオブジェクトにひとつだけ割り当てができます。代わりにEventTarget.addEventListener() メソッドを利用した方が、より柔軟性があります。」

原因は、<input onclick="list()"> がinput要素 の list属性 を参照してしまうためです。

JavaScript - input要素のonclickなどのイベントハンドラからグローバルな関数 list にアクセスできない件|teratail

投稿2019/02/06 00:31

編集2019/02/06 00:35
Lhankor_Mhy

総合スコア36074

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

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

maki_k

2019/02/06 01:08

回答ありがとうございます! JavaScriptのイベントハンドラと<script>タグでの記述って何が違うのか、というのが気になっていたので、 まさしくひとつ教えて頂いた気持ちです。 追加質問で恐縮なのですが、 > 相違点がいくつかあるので いくつか、のうちのひとつが教えて頂いたリンクの内容だと思うのですが、 想定されている相違点を(参照リンクとかで構いませんので、もしあれば…!!!)教えて頂けると大変幸いです!
Lhankor_Mhy

2019/02/06 01:26

・jQuery使用の有無。 ・URLをスクリプト内に書くか、HTMLに書くか。 が異なると思います。
maki_k

2019/02/06 01:32

なるほど、ありがとうございます!
guest

0

今のところどっちでも問題はなく、理由としては「結果が同じだから」くらいでしかないですが、
もし効率的に書きたいなら「hoge/」は固定のようなので#2ではわざわざ渡さなくて良いかと。:id部分だけ渡す感じですね。

投稿2019/02/06 00:29

m.ts10806

総合スコア80850

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

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

maki_k

2019/02/06 00:53

編集リクエスト、回答ありがとうございます! FWの記載なく失礼しました。確かにhtmlだけみるとそうですね! `hoge_path(id)`で渡す関係上、`hoge/`から記載しておりました。
guest

0

なんかおかしい

javascript

1 $('tr[data-href]').on('click', function(){ 2 location.href = $(this).data('href'); 3 });

投稿2019/02/06 00:31

yambejp

総合スコア114769

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

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

maki_k

2019/02/06 00:48

確かにその通りですね!ご指摘ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問