ListBox
2次元配列を取り、固定の列タイトルとスクロール可能なコンテンツを含むテーブルに出力し、列タイトルをクリックすることで並べ替え可能なJavaScriptオブジェクトをまとめています。HTMLにオブジェクト自体のメソッドを呼び出すイベントハンドラーを含めるには、オブジェクトが独自のインスタンス変数名を知っている必要があります。
var MyList = new ListBox();
列とコンテンツを設定した後、適切なメソッドがHTMLを生成します...
...
<td class="ListBox_ColumnTitle" onclick="MyList.SortByColumn(1)">...</td>
...
ここでstackoverflowを検索すると、次のコードが見つかり、オブジェクトの適切なインスタンスが見つかるように少し調整しました。
for (var v in window) {
try {
if (window[v] instanceof ListBox) { InstanceName = v; break; }
}
catch (e) { }
}
ただし、これはコンストラクター関数内では機能しません。インスタンスが見つからないだけです。後で問題なく動作しますが、コンストラクター内でそれを実行して、ListBoxを使用しているコードを単純化できるようにしたいと思います-これは可能ですか?
また、コンストラクターのパラメーターとして変数名を渡す方がはるかに簡単であることも理解していますが、可能であればこれは避けたいと思います。