teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

改善の追記

2019/12/13 02:01

投稿

risu
risu

スコア6

title CHANGED
File without changes
body CHANGED
@@ -110,4 +110,53 @@
110
110
 
111
111
  当方JavaScript初心者のため上のソースコードにおかしな点などあるやもしれませんので、もし意図が伝わりにくい等の不備がございましたらどうぞご指摘ください。
112
112
 
113
- 以上です。何卒、宜しくお願い申し上げます。
113
+ 以上です。何卒、宜しくお願い申し上げます。
114
+
115
+ ###改善の追記
116
+ maisumakun様のアドバイスを受けまして、以下「keisoku_3();」です。
117
+ 【改善1】として「.clone()」を使い、【改善2】としてクラス付与を変更致しました。
118
+
119
+ ですが「$html」が取得できないようで、要素の挿入がされない状況になってしまいました。
120
+ 困ったことにエラーも出ておらず、悪いところがわかりません。
121
+
122
+ お気づきの点ございましたらご指摘いただければと思い、ここに追記させて頂きました。
123
+ ```js
124
+
125
+ /*
126
+ keisoku_3();
127
+ maisumakun様のアドバイスを受けて
128
+ ----------------------------------------------*/
129
+ // 計測を実行
130
+ keisoku_3();
131
+ function keisoku_3(){
132
+
133
+ var time_before = new Date().getTime();
134
+
135
+ var $html;
136
+ for ( var i = 0; i < 3; i++ ) {
137
+ var data = { num:i, ttl:'hello_'+i };
138
+
139
+ if ( i == 0 ){
140
+ // 【改善1】1回目だけjQeury化する
141
+ var html = get_outline_html( '' ); // 【改善2】iを渡してクラス付与しない
142
+ var $html = $( html )
143
+ .find( '.ttl' ).text( data.ttl )
144
+ .find( '.num' ).text( data.num )
145
+ .find( '.box' ).addClass( 'num'+i ); // 【改善2】ここでクラス付与する
146
+ }else{
147
+ // 【改善1】2回目以降は.clone()する
148
+ var $html = $html.clone();
149
+ $html
150
+ .find( '.ttl' ).text( data.ttl )
151
+ .find( '.num' ).text( data.num )
152
+ .find( '.box' ).addClass( 'num'+i );
153
+ }
154
+ $( 'body' ).html( $html[0] ); // $html が取得できていない様子
155
+ }
156
+
157
+ var time_after = new Date().getTime();
158
+ console.log( 'keisoku_3() = ' + parseInt(time_after - time_before) );
159
+ }
160
+
161
+
162
+ ```