JS关于removeClassName循环替换使用失败求助
发布时间:2025-05-24 16:25:38 发布人:远客网络
一、JS关于removeClassName循环替换使用失败求助
html部分 id必须是唯一的,你的o1和 o2分别用了三次,应该为一次
js部分,这里查的是id,他只会找这个id出现的第一个元素,所以只有一个
1.改为document.getElementsByClassName("et-slide");
2.方框部分要写在循环内调用,不然也是只调用一次
3. removeClassName这个方法名是jquery的内置方法,养成一个良好的习惯,不要起这种和常用框架方法冲突的方法名
二、js移除onmousemove属性
event代表事件的状态,例如触发event对象的元素、鼠标的位置及状态、按下的键等等。
event对象只在事件发生的过程中才有效。
event的某些属性只对特定的事件有意义。比如,fromElement和 toElement属性只对 onmouseover和 onmouseout事件有意义。
下面的例子检查鼠标是否在链接上单击,并且,如果shift键被按下,就取消链接的跳转。
<HEAD><TITLE>Cancels Links</TITLE>
<SCRIPT LANGUAGE="JScript">
if(window.event.srcElement.tagName=="A"&& window.event.shiftKey)
window.event.returnValue= false;
<BODYοnclick="cancelLink()">
下面的例子在状态栏上显示鼠标的当前位置。
<BODYοnmοusemοve="window.status='X='+ window.event.x+' Y='+ window.event.y">
altKey, button, cancelBubble, clientX, clientY, ctrlKey, fromElement, keyCode, offsetX, offsetY, propertyName, returnValue, screenX, screenY, shiftKey, srcElement, srcFilter, toElement, type, x, y
--------------------------------------------------------------------------------
当alt键按下时,值为 TRUE,否则为 FALSE。只读。
这个属性仅用于onmousedown, onmouseup,和 onmousemove事件。对其他事件,不管鼠标状态如何,都返回 0(比如onclick)。
检测是否接受上层元素的事件的控制。
event.cancelBubble[= cancelBubble]
FALSE允许被上层元素的事件控制。这是默认值。
三、node.js eventemitter.on 不手动remove 会被回收吗
1、Node.js所有的异步 I/O操作在完成时都会发送一个事件到事件队列。
2、Node.js里面的许多对象都会分发事件:一个net.Server对象会在每次有新连接时分发一个事件,一个fs.readStream对象会在文件被打开的时候发出一个事件。所有这些产生事件的对象都是 events.EventEmitter的实例。
3、events模块只提供了一个对象: events.EventEmitter。EventEmitter的核心就是事件触发与事件监听器功能的封装。
4、你可以通过require("events");来访问该模块。
5、//引入 events模块var events= require('events');//创建 eventEmitter对象var eventEmitter= new events.EventEmitter();
6、EventEmitter对象如果在实例化时发生错误,会触发 error事件。当添加新的监听器时,newListener事件会触发,当监听器被移除时,removeListener事件被触发。
7、下面我们用一个简单的例子说明 EventEmitter的用法:
8、//event.js文件var EventEmitter= require('events').EventEmitter; var event= new EventEmitter(); event.on('some_event', function(){ console.log('some_event事件触发');}); setTimeout(function(){ event.emit('some_event');}, 1000);
9、运行这段代码,1秒后控制台输出了'some_event事件触发'。其原理是 event对象注册了事件 some_event的一个监听器,然后我们通过 setTimeout在 1000毫秒以后向 event对象发送事件 some_event,此时会调用some_event的监听器。
10、EventEmitter的每个事件由一个事件名和若干个参数组成,事件名是一个字符串,通常表达一定的语义。对于每个事件,EventEmitter支持若干个事件监听器。
11、当事件触发时,注册到这个事件的事件监听器被依次调用,事件参数作为回调函数参数传递。
12、让我们以下面的例子解释这个过程:
13、//event.js文件var events= require('events'); var emitter= new events.EventEmitter(); emitter.on('someEvent', function(arg1, arg2){ console.log('listener1', arg1, arg2);}); emitter.on('someEvent', function(arg1, arg2){ console.log('listener2', arg1, arg2);}); emitter.emit('someEvent','arg1参数','arg2参数');
14、执行以上代码,运行的结果如下:
15、listener1 arg1参数 arg2参数listener2 arg1参数 arg2参数
16、以上例子中,emitter为事件 someEvent注册了两个事件监听器,然后触发了 someEvent事件。
17、运行结果中可以看到两个事件监听器回调函数被先后调用。这就是EventEmitter最简单的用法。
18、EventEmitter提供了多个属性,如on和emit。on函数用于绑定事件函数,emit属性用于触发一个事件。接下来我们来具体看下 EventEmitter的属性介绍。
19、1 addListener(event, listener)
20、为指定事件添加一个监听器到监听器数组的尾部。
21、为指定事件注册一个监听器,接受一个字符串 event和一个回调函数。server.on('connection', function(stream){
22、console.log('someone connected!');});
23、为指定事件注册一个单次监听器,即监听器最多只会触发一次,触发后立刻解除该监听器。server.once('connection', function(stream){
24、console.log('Ah, we have our first user!');});
25、4 removeListener(event, listener)
26、移除指定事件的某个监听器,监听器必须是该事件已经注册过的监听器。
27、它接受两个参数,第一个是事件名称,第二个是回调函数名称。
28、var callback= function(stream){
29、console.log('someone connected!');};server.on('connection', callback);//...server.removeListener('connection', callback);
30、移除所有事件的所有监听器,如果指定事件,则移除指定事件的所有监听器。
31、默认情况下, EventEmitters如果你添加的监听器超过 10个就会输出警告信息。 setMaxListeners函数用于提高监听器的默认限制的数量。
32、8 emit(event, [arg1], [arg2], [...])
33、按参数的顺序执行每个监听器,如果事件有注册监听返回 true,否则返回 false。
34、1 listenerCount(emitter, event)
35、该事件在添加新监听器时被触发。
36、从指定监听器数组中删除一个监听器。需要注意的是,此操作将会改变处于被删监听器之后的那些监听器的索引。
37、以下实例通过 connection(连接)事件演示了 EventEmitter类的应用。
38、var events= require('events');var eventEmitter= new events.EventEmitter();//监听器#1var listener1= function listener1(){
39、console.log('监听器 listener1执行。');}//监听器#2var listener2= function listener2(){
40、console.log('监听器 listener2执行。');}//绑定 connection事件,处理函数为 listener1 eventEmitter.addListener('connection', listener1);//绑定 connection事件,处理函数为 listener2eventEmitter.on('connection', listener2);var eventListeners= require('events').EventEmitter.listenerCount(eventEmitter,'connection');console.log(eventListeners+"个监听器监听连接事件。");//处理 connection事件 eventEmitter.emit('connection');//移除监绑定的 listener1函数eventEmitter.removeListener('connection', listener1);console.log("listener1不再受监听。");//触发连接事件eventEmitter.emit('connection');eventListeners= require('events').EventEmitter.listenerCount(eventEmitter,'connection');console.log(eventListeners+"个监听器监听连接事件。");console.log("程序执行完毕。");
41、$ node main.js2个监听器监听连接事件。监听器 listener1执行。监听器 listener2执行。listener1不再受监听。监听器 listener2执行。1个监听器监听连接事件。程序执行完毕。
42、EventEmitter定义了一个特殊的事件 error,它包含了错误的语义,我们在遇到异常的时候通常会触发 error事件。
43、当 error被触发时,EventEmitter规定如果没有响应的监听器,Node.js会把它当作异常,退出程序并输出错误信息。
44、我们一般要为会触发 error事件的对象设置监听器,避免遇到错误后整个程序崩溃。例如:
45、var events= require('events'); var emitter= new events.EventEmitter(); emitter.emit('error');
46、node.js:201 throw e;// process.nextTick error, or'error' event on first tick ^ Error: Uncaught, unspecified'error' event. at EventEmitter.emit(events.js:50:15) at Object.<anonymous>(/home/byvoid/error.js:5:9) at Module._compile(module.js:441:26) at Object..js(module.js:459:10) at Module.load(module.js:348:31) at Function._load(module.js:308:12) at Array.0(module.js:479:10) at EventEmitter._tickCallback(node.js:192:40)
47、大多数时候我们不会直接使用 EventEmitter,而是在对象中继承它。包括 fs、net、 http在内的,只要是支持事件响应的核心模块都是 EventEmitter的子类。
48、为什么要这样做呢?原因有两点:
49、首先,具有某个实体功能的对象实现事件符合语义,事件的监听和发生应该是一个对象的方法。
50、其次 JavaScript的对象机制是基于原型的,支持部分多重继承,继承 EventEmitter不会打乱对象原有的继承关系。