Shammer's Philosophy

My private adversaria

JavaScriptによるソースコード整形表示関数化

JavaScript 二重配列 - Shammerismの内容を関数にした。こんな感じ。

function src_organize(id){
    var escapeChars = [
		       [" "," "],
		       ["<","&lt;"],
		       [">","&gt;"],
		       ["\"","&quot;"],
		       ["&","&amp;"]
    ];
    var array = document.getElementById(id).innerHTML.split("\n");
    var lineLength = array.length;
    replaced = "<table border=\"0\">";
    for( i = 0 ; i < lineLength ; i++ ){
	replaced = replaced + "<tr><td>" + (i + 1) + "</td>";
	if( i == 0 ) {
	    replaced = replaced + "<td rowspan=\"" + lineLength + "\" ";
	    replaced = replaced + "style=\"width: 1pm; height: 12px; ";
	    replaced = replaced + "background-color:green;\"></td>";
	}
	replaced = replaced + "<td>";
	var charLength = array[i].length;
	jloop :
	for( j = 0 ; j < charLength ; j++ ){
	    var c = array[i].charAt(j);
	    for( z = 0 ; z < escapeChars.length ; z++ ){
		if( c == escapeChars[z][0] ){
		    replaced = replaced + escapeChars[z][1];
		    continue jloop;
		}
	    }
	    replaced = replaced + c;
	}
	replaced = replaced + "</td></tr>";
    }
    document.getElementById(id).innerHTML = replaced;
}

同一ファイル内にこの関数があれば以下のように書くことで期待通りに動作する。

<script type="text/javascript">
src_organize("sample-source");
</script>

しかし、

<script src="JavaScript.js" type="text/javascript"></script>

という感じで外部のJavaScriptになっていると期待通りに動作しない。
おそらく、ファイルが変わるからファイル情報も渡してやらないといけないような気がする。やったことのないアクションだ。どうやればいいんだろうか。