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

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

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

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

jQuery

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

HTML

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

Q&A

1回答

2396閲覧

オンマウスした要素の背景色を変える

aaaaaaaa

総合スコア501

JavaScript

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

jQuery

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

HTML

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

0グッド

0クリップ

投稿2015/11/16 11:29

編集2015/11/16 11:34

オンマウスしたhtml要素の背景色を簡単なアニメーション付きで変更するソースなのですが、ソースの特性上、背景色が増えるごとに
ソースが冗長になってしまいます。今のところ、変更したいhtml要素の背景色が、緑(#093)と灰色(#ccc)だけなのですが、
色が増えていくごとに冗長になっていくこのソースに改善点はありますか。

javascript

1 //配列で指定した各々の要素の背景色を取得し、オンマウス時のアニメーションを追加する。 2 var animation_el = [ 3 '#gnavi li a', 4 '#language li a', 5 '#gnavi_contents p a:not(.gnavi_contents_title)' 6 ] 7 //変更する前の背景色をいれる変数 8 var color; 9 $.each(animation_el, function(index,value) { 10 $(value).on({ 11 'mouseenter':function() { 12 color = $(this).css('background-color'); 13 var ex = /^rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\)/; 14 var result = color.match(ex); 15 16 //●緑色の場合。rgb(0. 153, 51),#093 17 if(result[1] == 0 && result[2] == 153 && result[3] == 51) { 18 result[2] = result[2] - 20; 19 result[3] = result[3] - 7; 20 var enter_color = 'rgb('+result[1]+','+result[2]+','+result[3]+')'; 21 //●灰色の場合。rgb(204, 204, 204),#ccc 22 } else if(result[1] == 204 && result[2] == 204 && result[3] == 204) { 23 result[1] = result[1] - 39; 24 result[2] = result[2] - 39; 25 result[3] = result[3] - 39; 26 var enter_color = 'rgb('+result[1]+','+result[2]+','+result[3]+')'; 27 } 28 29 $(this).animate({'background-color': enter_color}, 400); 30 }, 31 'mouseleave':function() { 32 $(this).animate({'background-color': color}, 400); 33 } 34 });//on 35 }); 36

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11152633331

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

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

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

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

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

guest

回答1

0

試してないんですが、これで動くんじゃないでしょうか。
colors変数の中身を増やせば何色でも対応かのうですよ。

あと、元のコードだとアニメーション中にマウスオーバーを素早く繰り返すと、動かなくなっちゃうんじゃないかなぁ(途中の色で固まっちゃう)

js

1 //var color; //いらない 2 var colors = [ 3 {from:"rgb(0. 153, 51)" , to"rgb(0, 133, 44)"}, 4 {from:"rgb(204, 204, 204)", to"rgb(165, 165, 165)"}, 5 ]; 6 $.each(animation_el, function(index,value) { 7 //初期色を保存 8 value.baseColor = $(value).css('background-color'); 9 10 $(value).on({ 11 'mouseenter':function() { 12 for(var i=0; i<colors.length; i++){ 13 if(colors[i].from == this.baseColor){ 14 $(this).animate({'background-color': colors[i].to}, 400); 15 break; 16 } 17 } 18 }, 19 'mouseleave':function() { 20 $(this).animate({'background-color': this.baseColor}, 400); 21 } 22 });//on 23 });

投稿2015/11/16 11:58

kohashi

総合スコア158

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

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

aaaaaaaa

2015/11/17 10:43

ご回答有難うございました。 baseColor変数の部分をコンソールで確認するとエラーがでてしまい処理が実行されない問題で躓いてしまったのですが、局所変数から大域変数にすることで解決しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問