我必须使用香草JavaScript的一个项目。 我有几个function,其中之一是打开菜单的button。 它在存在目标标识的页面上工作,但在标识不存在的页面上导致错误。 在那些function无法findid的页面上,我收到“无法读取属性”addEventListener“空”错误,我的其他function都没有工作。 下面是打开菜单的button的代码。 function swapper() { toggleClass(document.getElementById('overlay'), 'open'); } var el = document.getElementById('overlayBtn'); el.addEventListener('click', swapper, false); var text = document.getElementById('overlayBtn'); text.onclick = function(){ this.innerHTML = (this.innerHTML === "Menu") ? "Close" : "Menu"; return false; }; 我可能需要将其全部包装到另一个函数中,或者使用if / else语句,以便仅在特定页面上searchid,但不能确定。 相当新的Javascript。 预先感谢您的帮助,并让我知道,如果额外的代码将使这更容易回答。
我创build了一个有几个方法的对象。 其中一些方法是asynchronous的,因此我想使用事件来完成方法时执行的操作。 为此,我尝试将addEventListener添加到对象。 的jsfiddle var iSubmit = { addEventListener: document.addEventListener || document.attachEvent, dispatchEvent: document.dispatchEvent, fireEvent: document.fireEvent, //the method below is added for completeness, but is not causing the problem. test: function(memo) { var name = "test"; var event; if (document.createEvent) { event = document.createEvent("HTMLEvents"); event.initEvent(name, true, true); } else { event = document.createEventObject(); event.eventType = […]
我需要设置一个简单的事件侦听器来刷新ListView偶尔。 问题是我不知道我怎么能产生一个事件。 我知道,像按键或button按下事件我只需要实现Handler 。 但在这个特定的情况下,我实际上需要生成事件,每当我的应用程序的另一个正在运行的线程唤醒并刷新RSS提要的新闻列表时,就会触发该事件。 我做了所有事情,但都陷在这里。 我可以得到任何build议或链接关于如何实现这一点的更多信息?
我想知道如何正确使用addEventListener分别attachEvent ? window.onload = function (myFunc1) { /* do something */ } function myFunc2() { /* do something */ } if (window.addEventListener) { window.addEventListener('load', myFunc2, false); } else if (window.attachEvent) { window.attachEvent('onload', myFunc2); } // … 要么 function myFunc1() { /* do something */ } if (window.addEventListener) { window.addEventListener('load', myFunc1, false); } else if (window.attachEvent) […]
在处理浏览器事件时,我已经开始将Safari的touchEvents结合到移动设备中。 我发现addEventListener是与条件相叠加的。 这个项目不能使用JQuery。 标准的事件监听器: /* option 1 */ window.addEventListener('mousemove', this.mouseMoveHandler, false); window.addEventListener('touchmove', this.mouseMoveHandler, false); /* option 2, only enables the required event */ var isTouchEnabled = window.Touch || false; window.addEventListener(isTouchEnabled ? 'touchmove' : 'mousemove', this.mouseMoveHandler, false); JQuery的bind允许多个事件,如下所示: $(window).bind('mousemove touchmove', function(e) { //do something; }); 有没有一种方法来结合两个事件侦听器在JQuery示例? 例如: window.addEventListener('mousemove touchmove', this.mouseMoveHandler, false); 任何build议或提示,表示赞赏!
我已经dynamic地创build了一个checkbox。 我已经使用addEventListener来调用一个函数,点击checkbox,该checkbox可以在Google Chrome和Firefox中使用,但在Internet Explorer 8中不起作用 。 这是我的代码: var _checkbox = document.createElement("input"); _checkbox.addEventListener("click", setCheckedValues, false); setCheckedValues是我的事件处理程序。
我有一个button,我添加了一些事件列表: document.getElementById("btn").addEventListener("click", funcA, false); document.getElementById("btn").addEventListener("click", funcB, false); document.getElementById("btn").addEventListener("click", funcC, false); document.getElementById("btn").addEventListener("blur" , funcD, false); document.getElementById("btn").addEventListener("focus", funcE, false); <button id="btn">button</button> 我可以删除它们: document.getElementById("btn").removeEventListener("click",funcA); 如果我想要一次删除所有侦听器,或者我没有函数引用( funcA )? 有没有办法做到这一点,或者我必须逐个删除它们?
预期/伪示例: stage.addEventListener(MouseEvent.CLICK, onClick.someWayToPassParameters(true, 123, 4.56, "string")); function onClick(e:MouseEvent):void { trace("Received " + someWayToRetrieveParameters().b/i/n/s + "."); } 多年来(3〜4年),在每一个网站,论坛,博客上,无论我在哪里search,人们告诉我没有简单的方法来做到这一点。 他们通常build议: 将侦听器添加到dynamic对象,您可以在其中将该值设置为一个额外的属性,并在该函数中引用它(e.target.property / e.currentTarget.property)。 并不是所有的类都是dynamic的 例如,它在Sprite上不起作用。 使用自定义类扩展对象的类以添加属性或使其变为dynamic。 你必须每次创build一个全新的调整类。 使用匿名函数作为事件处理程序。 没有参考(这是丑陋的)。 要删除监听器以释放资源,你必须使用arguments.callee从函数本身内部完成。 在事件处理程序中使用参数调用另一个函数。 而在事件处理程序调用的地方去参数呢? 将事件处理程序保存在与参数相同的作用域中。 违背语义混乱。 在接收目标和参数的函数中封装事件处理程序定义和addEventListener调用。 它可以混合使用示波器,但是它非常接近。 但是你必须小心。 …其他许多build议的解决方法。 我只想传递一个参数给事件处理函数,所以我可以在函数内部使用它,就像任何普通的函数一样! 我要求太多吗?
我正在使用keypress监听器,例如.. addEventListener("keypress", function(event){ } 但是,这似乎并没有检测到一个退格删除文本..有没有一个不同的监听器,我可以用它来检测?
我正在尝试执行以下操作: 我有一组图像和select(下拉)HTML元素,每个30。 我试图从1到30循环上使用AddEventListener,以便当我改变select的值,图像src更新(和图像的变化)。 AddEventListener函数是这样的: function AddEventListener(element, eventType, handler, capture) { if (element.addEventListener) element.addEventListener(eventType, handler, capture); else if (element.attachEvent) element.attachEvent("on" + eventType, handler); } 我试过这个,它的工作原理: var urlfolderanimalimages = "http://localhost/animalimages/"; var testselect = "sel15"; var testimg = "i15"; AddEventListener(document.getElementById(testselect), "change", function(e) { document.getElementById(testimg).src = urlfolderanimalimages + document.getElementById(testselect).value; document.getElementById(testimg).style.display = 'inline'; if (e.preventDefault) e.preventDefault(); else e.returnResult = false; […]