Javascript IE7在事件处理程序函数-prototype.js中丢失参数
我在一个页面上有一堆元素,其中有一个“产品”类。我想给每一个附加一个事件处理程序,所以悬停时会显示一个工具提示。 以下代码在Chrome、Firefox、Safari和IE8+中运行良好,但在IE7中运行不正常: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
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();好主意。我当然应该想到这一点,但有时你只需要外部意见:)