JavaScript で文字をトリミングする
JavaScript を用いてエントリータイトル等の文字をトリミング(指定した文字数だけ表示する)するカスタマイズです。
以前、「Movable Type のようなトリミングを、他のブログで実現できないでしょうか」というご質問の回答です。大変遅くなりましたが、このエントリーで回答に替えさせて頂きます。
ここでは文字数でトリミングする方法を紹介していますが、半角・全角が混在している場合のサイズを調整したい場合は、下記のエントリーを参照ください。
とりあえず「id 属性名」と「要素名+ class 属性名」で指定したタグの中に記述された文字列をトリミングする、簡単な JavaScript を書いてみました。
Windows + IE6/Firefox 2 で実験した限りでは、全角・半角いずれも1文字で計算してトリミングしてくれるようですが、コードに不具合等ありましたらお知らせください。
1.スクリプトの追加
リスト 1.1 のリストを </head> の直前に追加します。外部ファイルでも構いません。
<script type="text/javascript"> var rest = '...'; function cutStringById(id, size) { var str = document.getElementById(id).innerHTML; if(str.length > size){ document.getElementById(id).innerHTML = str.substring(0, size) + rest; } } function cutStringByTagNameAndClassName(tagName, className, size) { var elements = document.getElementsByTagName(tagName); for (i=0; i < elements.length; i++) { if (elements[i].getAttribute('class') == className || elements[i].getAttribute('className') == className) { var str = elements[i].innerHTML; if(str.length > size){ elements[i].innerHTML = str.substring(0, size) + rest; } } } } </script>- リスト 1.1 トリミング用スクリプト
2.スクリプトを起動する
リスト 2.1 またはリスト 2.2 のいずれかを 、トリミングしたい文字列の直後、または </body> の直前に追加します。
要素名+ class 属性名で指定
<script type="text/javascript"> cutStringByTagNameAndClassName('[要素名]', '[class 属性名]', トリミングサイズ); </script>- リスト 2.1 要素名+ class 属性名で指定
id 属性名で指定
<script type="text/javascript"> cutStringById('[id 属性名]', トリミングサイズ); </script>- リスト 2.2 id 属性名で指定
具体的な起動方法は3項をご覧ください。
3.サンプル
リスト 3.1 のようにHTMLマークアップされた文字列
<a href="http://domain.com/" class="hoge">文字をトリミングする</a>- リスト 3.1 サンプル1
の「文字をトリミングする」の文字を先頭から 5 文字だけ表示(「文字をトリ...」にする)する場合は、リスト 2.1 を利用し、その赤色部分を、
cutStringByTagNameAndClassName('a', 'hoge', 5);- リスト 3.2 サンプル2
とします。
リスト 3.3 のようにHTMLマークアップされた文字列
<p id="hoge">文字をトリミングする</p>- リスト 3.3 サンプル2
の「文字をトリミングする」の文字を先頭から 5 文字だけ表示(「文字をトリ...」にする)する場合は、リスト 2.2 を用い、その赤色部分を
cutStringById('hoge', 5);- リスト 3.4 サンプル2
とします。
4.トリミング後の追加文字列を変更する
リスト 1.1 の 2 行目(リスト 4.1 の赤色部分)を他の文字に変更してください。何も表示させたくない場合は赤色部分を削除してください。
var rest = '...';- リスト 4.1 トリミング後の文字列
- dtree のサブカテゴリーリストにブログ記事タイトルを表示する for Movable Type
- Movable Type 4.1/MTOS のネイティブタグで dTree を実装する
- コメント投稿フォームの「情報を保存する」のチェックを外した時の振る舞いを変更する
- Parallax Backgrounds で背景画像のスクロール速度を変える
- Lightbox JS/Litebox で BlogPet を背景画像の下に隠す
- prototype.js と pngfix.js の競合を解消する
- JavaScript の for 文のパフォーマンスを改善する
- Google マップの貼り付け用 HTML を valid にする
- Movable Type 4 の透過 PNG ロゴを IE6 以下のブラウザで透過する
- ツリー表示 JavaScript 「dTree」詳解
- dTree によるサブカテゴリーリスト for Movable Type
- HighSlide JS と prototype.js の競合を解消する
- HighSlide JS の onclick 属性を JavaScript で登録する
- Slider によるフォントサイズ変更でアクセシビリティを向上させる
- コメント投稿時にフォームボタンをグレーアウトする for Movable Type
- Slider の利用方法
- Highslide JS でサムネイル画像を拡大表示する
- JavaScript で文字をトリミングする(改善版)
- BlogPeople 等のリンクリストによる表示の遅延を解消する(その1:JavaScript編)
≫ Javascriptの読まれるタイミングと実行のタイミング from nakawake.oops!
こんにちは、なかわけです。 昨日、仕事で発見した(というか仲間と話してて見つけた... [続きを読む]

