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

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

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

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

4298閲覧

JS 基本質問

tqkqt0

総合スコア155

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

1クリップ

投稿2017/04/25 01:25

JS初心者です。有識者からすると非常に簡単かと思いますが、
出来るだけきれいなコードを書きたいので教えていただければと思います。

html

1<input type = 'button' id='3' value='bbb' onclick='douteki(this.id)'>

javascript

1<script type="text/javascript"> 2function douteki(id){ 3 console.log(id); 4 $("#"+id).css({'background':'#000000'}); //①番 5 } 6</script>

ボタンを押すとボタンの背景色がかわります。
コメントアウト①番なのですが、idの書き方はもっとスマートに書くことは可能でしょうか?$("#"+id)とかかないといけないのですかね。。
それともこういう処理の場合、全体的にもっとスマートに書く方法ありますか?

ご教授の程よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

ちょっとidの命名方法がよくないですね
複数のタグに対して反映させるならクラスでやったほうがいいでしょう
どうせやるならscript側でオブジェクトを掴んだ方がきれいです

javascript

1<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 2<script> 3$(function(){ 4 $(".douteki").on('click',function(){ 5 $(this).css({'background-Color':'#000000'}); 6 }); 7}); 8</script> 9<input type = 'button' id='id1' value='aaa' class='douteki'> 10<input type = 'button' id='id2' value='bbb' class='douteki'> 11<input type = 'button' id='id3' value='ccc' class='douteki'> 12 13

追記

jQueryナシ版

javascript

1<script> 2document.addEventListener('click',function(e){ 3 var t=e.target; 4 if(t.className.match(/(^| )douteki(?: |$)/)){ 5 t.style.backgroundColor='#000000'; 6 } 7}); 8</script> 9<input type = 'button' id='id1' value='aaa' class='douteki'> 10<input type = 'button' id='id2' value='bbb' class='douteki'> 11<input type = 'button' id='id3' value='ccc' class='douteki'>

投稿2017/04/25 01:44

編集2017/05/10 02:02
yambejp

総合スコア114779

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

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

tqkqt0

2017/04/25 02:03

JS側から掴むんですか。ありがとうございます。大変勉強になりました。
tqkqt0

2017/05/10 01:48

今更ですみません、このscript側でオブジェクトを掴む方法ですが、Jqueryを使わないとできないのでしょうか?
yambejp

2017/05/10 02:03

jQueryナシ版追記しときました
tqkqt0

2017/05/10 02:48

ありがとうございました!!
guest

0

onclickのthisはイベント発生源の要素を示すので、わざわざidを取得してからid名で要素を取得しなくても、そのま要素を引き渡してやればよいです。

html

1<input type = 'button' id='3' value='bbb' onclick='douteki(this)'> 2<script type="text/javascript"> 3function douteki(element) { 4 $(element).css({'background':'#000000'}); 5} 6</script>

投稿2017/04/25 01:36

ku__ra__ge

総合スコア4524

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

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

tqkqt0

2017/04/25 02:03

なるほど、IDは渡さなくても書けたのですね! ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問