メチ4脳ート
 
Amebaでブログを始めよう!
1 | 2 | 3 | 4 | 5 | 最初次のページへ >>

【EXCEL】エクセルで印刷するときに特定の行(列)を毎回印刷する(ヘッダー化、タイトル化)

1.[ページレイアウト]タブ → [ページ設定]グループ →[印刷タイトル]→ ダイアログボックスが現れる。

2.「印刷タイトル」となっている部分で、ヘッダー化したい行または列を選択。

 

これで選択した個所が毎回印刷される。

【FireFox】dl dt の display: list-item バグ【HTML CSS】

HTMLのdl dtに対してCSSでdisplay:list-itemを指定し、list-style-type: decimalを指定するとFireFox(2014/10/09 Ver32現在)ではバグで先頭の数字が全て0(ゼロ)になる。

例:

dl dt {
margin-left: 3em;
display: list-item;
list-style-type: decimal;
}



対処方法


display: list-itemは止めてcounter-resetを使う。(IE8以上)

dl dt {
margin-left: 1em;
}
dl {
counter-reset: count 0;
}

dl>dt:before {
counter-increment: count;
content: counter(count) ". ";
}

jQuery高速化3 Tips【JavaScript】

jQuery高速化2 同じ要素を使うときは〇〇すべし【JavaScript】

個人的jQuery高速化メモ2
同じ要素を連続や繰り返し使う場合、セレクタを変数化するかメソッドチェーンを利用すべし。

例えば、配列の内容をtableに追加する場合。

jQuery.each(vr, function(i, val) {
$('#hoge').append("'+val+'");
});


とすると、配列の個数分セレクタで#hogeが参照されてしうため配列数が多くなれば処理がかなり重くなる。

この場合、セレクタを変数化します。
すると#hogeは1度しかマッチングされないので高速化になる。

hogeObj = $('#hoge');
jQuery.each(vr, function(i, val) {
hogeObj.append("'+val+'");
});



次に同じ要素に対して複数の処理を行う場合。
これにはメソッドチェーンを使うと高速化できる。

例えば、入力フォームをファーカスして選択状態にする。

$('#hoge').focus();
$('#hoge').select();


とすると、#hogeが2回マッチングされているのでもったいない。
同じセレクタを利用するときははメソッドチェーンで繋げる。

$('#hoge').focus().select();



jQuery高速化 セレクタにClass名を使うならタグで指定すべし【JavaScript】

個人的jQuery高速化メモ
jQuery1.7以下の場合、複数のセレクタをClass名で指定し動作させるとIEの場合は劇的に重くなる。
idで指定すればいいじゃんって言われそうだけどtable内の複数行、複数列のtd毎に条件で分岐させたい時なんかは、まずClass名で現在の列を判断するほうが簡単なんだよね。
idは一意っていう原則もあるし。(一意じゃなくても使えるけどキモチワルイ)
まぁid毎に検査させるのがメンド・・・ゴホゴホ。いやスマートじゃないw

他にもtdのindexを格納してその位置を取得なんてやり方もあるけど、なんだかスマートじゃないよね。データベースの結果が表示されるので行数が一定ではないし。(どんだけindex振るんだって話に)

詳しくはjQuery バージョン毎の違い。変更点【JavaScript】に記述。

てなことで本題。
セレクタにClass名を使うなら直接指定するよりもタグ(今回の場合はtable td)を指定して関数内で条件を付けたほうが当然早くなる。

■検証 (IE8)
jQuery バージョン毎の違い。変更点【JavaScript】と同じ状況(Class名を複数指定、テーブルの行を60行)で表示させてみる。

悪い例:列数は12、内9個のtdにClass名(cl1~cl9)を指定。

$('.cl1, .cl2, .cl3, .cl4, .cl5, .cl6, .cl7, .cl8, .cl9').click(function () {
//Class名毎の条件~click時の処理
}



jQuery1.4.4 → IE8の場合、処理できずにハングアップする。

jQuery1.8.1 → 瞬時に表示される。


変更後:セレクタにはtable tdを指定。(tableのidを#stableとする)

$('#stable td').click(function () {
var selecters = new Array('cl1', 'cl2', 'cl3', 'cl4', 'cl5', 'cl6', 'cl7', 'cl8', 'cl9');
var clickTd = $(this).attr('class');
if($.inArray(clickTd, selecters)===-1){return false;}
//Class名毎の条件~click時の処理
}



jQuery1.4.4 → 2秒ほどで表示されるようになった!

jQuery1.8.1 → 瞬時に表示される。
1 | 2 | 3 | 4 | 5 | 最初次のページへ >>