Javascript IE7在事件处理程序函数-prototype.js中丢失参数

Javascript IE7在事件处理程序函数-prototype.js中丢失参数,javascript,event-handling,internet-explorer-7,prototypejs,dom-events,Javascript,Event Handling,Internet Explorer 7,Prototypejs,Dom Events,我在一个页面上有一堆元素,其中有一个“产品”类。我想给每一个附加一个事件处理程序,所以悬停时会显示一个工具提示。 以下代码在Chrome、Firefox、Safari和IE8+中运行良好,但在IE7中运行不正常: function init() { $$('.product').each(function(elm) { var id = elm.id; var name = new Element('div', {'clas

我在一个页面上有一堆元素,其中有一个“产品”类。我想给每一个附加一个事件处理程序,所以悬停时会显示一个工具提示。 以下代码在Chrome、Firefox、Safari和IE8+中运行良好,但在IE7中运行不正常:

    function init() {
        $$('.product').each(function(elm) {
            var id = elm.id;
            var name = new Element('div', {'class': 'title'}).update(products[id].name);
            var desc = new Element('div').update(products[id].desc);
            var content = new Element('div');
            content.appendChild(name);
            content.appendChild(desc);
            elm.observe('click', function() {showTooltip(content)});
            elm.observe('mouseover', function() {showTooltip(content)});
            elm.observe('mouseout', function() {hideTooltip()});
        });
    }

    document.observe('dom:loaded', init);
在IE7中,我第一次将鼠标悬停在每个元素上时,它工作得很好。但是,当我第二次悬停在元素上时,“content”变量是空的。如果我将我的
showTooltip()
函数替换为一个简单的
警报(content.innerHTML)
,它会第一次警报正确的HTML,之后每次警报都是空的

我还尝试将内容存储为对象,并使用bindAsEventListener,但得到了相同的结果


有人对是什么导致内容在IE7中无法持久存在有什么想法吗?

@Josh Ryan,mouseout上的hideTooltip()函数在做什么。如果功能丢失,我将从调试开始


编辑:对不起,我现在记得您说过这在其他浏览器中也可以使用,但是看到mouseout函数还是会有帮助的。

我会尝试将“内容”附加到DOM中,并为工具提示传递对元素的引用,而不是代码中的元素。

hideTooltip所做的一切都是ToolTipeElement.hide();好主意。我当然应该想到这一点,但有时你只需要外部意见:)