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

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

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

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

jQuery

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

Q&A

解決済

1回答

1174閲覧

jQueryの繰り返しのプログラムを、短く記述したい

peak

総合スコア7

JavaScript

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

jQuery

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

0グッド

1クリップ

投稿2018/02/08 11:46

jQueryの繰り返しのプログラムを、短く記述したい

すでに動いているプログラムを、完結に表現したいです

$.fn.T001 = (function() { var $window = $(window); return function() { var $el = this; (略) }; (略) onResize(); }; }()); $(function() { $('table.resp:first').wrap('<div class="Table001"></div>'); $('.Table001').T001(); }); $.fn.T002 = (function() { var $window = $(window); return function() { var $el = this; (略) }; (略) onResize(); }; }()); $(function() { $('table.resp:eq(2)').wrap('<div class="Table002"></div>'); $('.Table002').T002(); }); ・ ・ ・

上記のようなT001、T002
についてのファンクション文が、
T009まで、続いています。
(内容は、同じで数字だけが異なり、T009まで続いています)

内容としましては、ページ内のテーブルを上から、
class="Table00?" 
と言う形でナンバリングしています。

さらに、
class="Table00?" 
という数字が振られた、それぞれのテーブルに対して、
縦横比が異なっているため再計算して、縮小のリサイズの処理を加えているのが、
T001、T002〜T009
の内容です。


今回したい事としましては、

『T001からT009までを、記述せずに、もっとシンプルに繰り返しの「i」などを使って記述したい』
『T009までしか記述できていませんが、ページ内の全テーブルに対して「Table00?」の数字を振り、リサイズの処理をしたい』

の2点を解決したいと考えております。

補足情報

詳しいプログラムの知識を持ち合わせていないため、分かりにくい点などありましたら、お気軽にご質問願います。

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

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

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

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

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

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

guest

回答1

0

ベストアンサー

(略)の箇所に、T00?等の参照がなければ、
javascriptにおいて、hoge.fugaとhoge['fuga']は同じ意味なので、
該当の箇所を下記のように書き換えればいけるかなと思います。

ただし、「$('table.resp:eq(2)').wrap('<div class="Table002"></div>');」
の呼び出しの箇所については、ある程度の書き換えが必要です(下記の※2参照)。

javascript

1for(var i=1; i<=9; ++i){ // 1~9まで、9より大きくしたい場合は条件を書き換えてください 2 var no = i.toString() 3 // 全体で3文字となるように先頭に0を追加する( 1を001に変換する ) 4 while(no.length < 3 )no= '0' + no; 5 6 $.fn[ 'T' + no ] = (function() { 7 var $window = $(window); 8 return function() { 9 var $el = this; 10 () 11 }; 12 () 13 onResize(); 14 }; 15 }()); 16 17 18 // ※2 19 $( 20 (function(idx, label){ 21 return function() { 22 var tbl; 23 if(idx == 1){ 24 tbl= $('table.resp:first'); 25 } 26 else { 27 tbl= $('table.resp:eq('+idx+')'); 28 } 29 30 tbl.wrap('<div class="Table' + label + '"></div>'); 31 $('.Table'+ label)['T' + label](); 32 }); 33 })(i,no); 34 ) 35 36}

投稿2018/02/08 12:44

編集2018/02/08 12:46
whistyun

総合スコア149

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

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

peak

2018/02/08 23:33

誠にありがとうございます。 無事解決致しました。 解説文もとても分かりやすかったです。感謝です!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問