removeEventListener未定义引用
removeEventListener undefined reference
我正在创建一个大的div网格,我计划在上面执行动画和效果。我有大约90个div来创建平铺的背景。下面是这个的诀窍。。我正在创建响应页面。我不能浮动这些div,所以它们被内联阻塞,并隐藏溢出。因此,随着视口宽度的变化,行中div的数量也会发生变化——本质上是上下移动div。因此,我不得不根据位置(x,y)动态填充div文本。不幸的是,我在事件侦听器框移动时遇到了问题。
当我试图删除事件侦听器时,我会得到一个未定义的错误——即使我将其移动到初始侦听器范围中也是如此。
function menuBox(){
var allDiv = document.getElementsByTagName('div');
var menuDiv1 = document.elementFromPoint(39, 16);
var menuDiv2 = document.elementFromPoint(39, 120); //Blank Div
var menuDiv3 = document.elementFromPoint(39, 225);
var menuDiv4 = document.elementFromPoint(39, 329);
var menuDiv5 = document.elementFromPoint(39, 433);
var menuDiv6 = document.elementFromPoint(39, 538);
var menuDiv7 = document.elementFromPoint(39, 642);
var menuDiv = [
menuDiv1,
menuDiv3,
menuDiv4,
menuDiv5,
menuDiv6,
menuDiv7
]
for (var i = 0; i < allDiv.length; i++) {
allDiv[i].innerHTML = '';
// allDiv[i].removeEventListener("mouseover", menuOver, false);
// allDiv[i].removeEventListener("mouseout", menuOut, false);
};
for (var i = 0; i < menuDiv.length; i++) {
menuDiv[i].addEventListener("mouseover", function menuOver(){
TweenLite.to(this, 0.4, {backgroundColor: '#272822', color: '#fff', scale: 1.1})
}, false);
menuDiv[i].addEventListener("mouseout", function menuOut(){
TweenLite.to(this, 0.3, {backgroundColor: '#fff', color: '#000', scale: 1})
}, false);
};
menuDiv1.innerHTML = '<p>Switch<br>Menu</p>';
menuDiv3.innerHTML = '<p>Michael</p>';
menuDiv4.innerHTML = '<p>Design</p>';
menuDiv5.innerHTML = '<p>Develop</p>';
menuDiv6.innerHTML = '<p>Imaging</p>';
menuDiv7.innerHTML = '<p>Motion</p>';
console.log('menuBox function');
};
menuBox();
window.onresize = menuBox;
您应该知道,要从DOM元素中删除事件处理程序,用addEventListener()
方法指定的函数必须是外部函数。像domelement.removeEventListener("event", function(){ ''something });
这样的匿名函数将不起作用。
话虽如此,在您的代码中也出现了同样的错误,从而导致引用类型的错误Uncaught ReferenceError: menuOver is not defined
。为了让你的代码工作,以下是你应该使用的更改:
for (var i = 0; i < allDiv.length; i++) {
allDiv[i].innerHTML = '';
allDiv[i].removeEventListener("mouseover", menuOver, false);
allDiv[i].removeEventListener("mouseout", menuOut, false);
};
for (var i = 0; i < menuDiv.length; i++) {
menuDiv[i].addEventListener("mouseover",menuOver, false);
menuDiv[i].addEventListener("mouseout",menuOut, false);
};
function menuOver(){
TweenLite.to(this, 0.4, {backgroundColor: '#272822', color: '#fff', scale: 1.1});
}
function menuOut(){
TweenLite.to(this, 0.3, {backgroundColor: '#fff', color: '#000', scale: 1});
}
相关文章:
- 无法获取属性'selectedIndex'的未定义引用或null引用
- 无法获取属性'Id'使用Knockout.js的未定义或空引用API
- 在gump和nodejs中使用Typescript时,未定义对require和exports的引用
- gmaps4rails 2.4.6未捕获引用错误:未定义Gmaps
- 未捕获引用错误:未定义validateform
- 为什么我会出现此错误"未捕获引用错误:未定义标题;
- $未定义-未捕获引用错误
- Sitecore”;未捕获引用错误:未定义MultilistWithSearch;
- Wordpress:未捕获引用错误:未定义速度
- Node.js引用错误:未定义类名
- 未捕获的引用错误:未定义<映射键>
- Javascript错误:未捕获引用错误:未定义编辑
- jQuery$(this)引用未定义
- 无法获取属性'字符串'的未定义或null引用IE 11 ASP.NET
- 未捕获引用错误:未定义PrintThisPage
- Node.js-socket.io-对io.sockets的引用突然未定义
- 引用错误:在尝试使用ajax发送数据时未定义
- 在JavaScript中引用未定义的变量时,如何避免出现错误
- 在AJAX/JavaScript中,如何可能引用未定义的变量(匿名函数)
- Edge浏览器中window.open()返回的引用未定义