サイトマップ

JavaScriptコードスニペット:行番号をつける

pre要素によって表現されるプログラムコードに行番号が欲しい場合があります。それを実現するためにわざわざtableを使ったりということになると、プログラムのコピー&ペーストが上手くできなくなるという問題が起こります。それを避けるため、あえてpre要素のままで改行コードを数えることによって行番号を付与します。

自動折り返しになっていると行番号がずれてしまいますので、注意が必要です。

※すいません、この例だとIEではうまくいかないですね…

【サンプル】

(function(name) {
  var nodeList = document.getElementsByTagName(name);
  var len = nodeList.length;
  for ( var i = 0; i < len; i++) {
    var node = nodeList.item(i);
    var text = node.textContent ? node.textContent : node.innerText;
    var linecount = text.split("\n").length;
    var linetext = "";
    for (var j = 1; j <= linecount; j++) {
      linetext += j + "<br/>";
    }
 
    var linenode = node.cloneNode(false);
    linenode.id = "linenumber";
    linenode.style.cssFloat = linenode.style.styleFloat = "left";
    linenode.style.border = "1px solid transparent";
    linenode.style.textAlign = "right";
    linenode.innerHTML = linetext;
    node.parentNode.insertBefore(linenode, node);
  }
})('pre');

【サンプルその1の実行】クリックすると、上のサンプルに行番号がつけられます。

関連コンテンツ

 
research/1309056937.txt · 最終更新: 2011/07/02 08:43 by Kazuyuki Matsuda
特に明示されていない限り、本サイトの内容は次のライセンスに従います:Copyright(C) 2011 Shorindo, Inc. All Rights Reserved
Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki