我有一张从一个div逐字复制到另一个div的表格。我这样做,以便我可以有一个固定的表头与一个可滚动的主体。第一个div id为#headdiv
和第二个div类是.bodydiv
,以及#headdiv
内容复制到.bodydiv
使用此项功能:显示/隐藏复制div的鼠标悬停/鼠标悬停上的指定文本的div
$('.bodydiv').html($('#headdiv').html());
然后我修改了两个div的显示/可见性,使他们看起来像一张桌子。看到这里的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/,当你将鼠标悬停在表头,文本“标题行”出现。我试图做的是当你将鼠标悬停在说“Alpha”的单元格上时,使文本“Alpha”出现。
我知道为什么该函数在标题而不是正文中起作用。标题有一个在上面的函数中引用的id,而您看到的主体单元格是从#headdiv
复制的,因此它们的id无效。但是我对Javascript知之甚少,无法知道如何解决这个问题。使用类而不是id的不起作用。我有一种感觉,我可以使用this
重构整个脚本,也许可以从每个单元格中调用该函数,但我不知道该怎么做。
任何帮助,将不胜感激!