あるdivから別のdivに逐語的にコピーされるテーブルがあります。これは、本体がスクロール可能な固定テーブルヘッダーを作成できるようにするためです。最初のdividはで#headdiv
、2番目のdivクラスは.bodydiv
であり、の内容は次の関数で#headdiv
複製され.bodydiv
ます。
$('.bodydiv').html($('#headdiv').html());
次に、2つのdivの表示/表示プロパティを変更して、1つのテーブルのように見せます。htmlとcssについてはこちらをご覧ください:http://jsfiddle.net/jbswetnam/KNnAd/5/
ここで、ユーザーがテーブルのセルにカーソルを合わせたときにヘルプテキストを表示するようにします。要素IDを使用して、次の関数でこれを行うことができます。
//Copied and modified from https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Closures
function showInfo(info, display) {
document.getElementById('infoBox').innerHTML = info;
document.getElementById('infoBox').style.display = display;
}
function makeInfoCallback(info, display) {
return function() {
showInfo(info, display);
};
}
function setupInfo() {
var infoText = [
{'id': 'header', 'info': 'Header Row'},
{'id': 'alpha', 'info': 'Alpha'}
];
for (var i = 0; i < infoText.length; i++) {
var item = infoText[i];
document.getElementById(item.id).onmouseover =
makeInfoCallback(item.info, "");
document.getElementById(item.id).onmouseout =
makeInfoCallback("", "none");
}
}
setupInfo();
http://jsfiddle.net/jbswetnam/KNnAd/5/で確認できるように、テーブルヘッダーにカーソルを合わせると、「HeaderRow」というテキストが表示されます。私がやろうとしているのは、「アルファ」と書かれたセルにカーソルを合わせると、「アルファ」というテキストが表示されるようにすることです。
関数が本文ではなくヘッダーで機能する理由を知っています。ヘッダーには上記の関数で参照されているIDがありますが、表示されているボディセルはコピー元#headdiv
であるため、そのIDは無効です。しかし、問題を解決する方法を知るには、Javascriptについて十分に知りません。idの代わりにクラスを使用しても機能しません。各セルから関数を使用して呼び出したり、スクリプト全体をリファクタリングできると感じていますが、this
その方法がわかりません。
どんな助けでもいただければ幸いです!