js点击事件

JavaScript027

js点击事件,第1张

遍历一次body下的所有元素。给各元素添加click处理函数或者mousedown处理函数。

var tgs=document.getElementsByTagName("*")

for(var i =0i<tgs.lengthi++){

var t=tgs[i]

t.onMouseDown=function(e){

var that=this

if(this.tagName &&(this.tagName==='table'||-----)){//这里判断有点粗糙,你还需要判断是否是tr或td

//该table的id或者比较别的也行,只要能判断是你需要的那个table

//改变table的样式

}else{//不是你指定的table

//恢复table的样式

}

}

}

事件处理是对象化编程的一个很重要的环节,没有了事件处理,程序就会变得很死,缺乏灵活性。事件处理的过程可以这样表示:发生事件 - 启动事件处理程序 - 事件处理程序作出反应。其中,要使事件处理程序能够启动,必须先告诉对象,如果发生了什么事情,要启动什么处理程序,否则这个流程就不能进行下去。事件的处理程序可以是任意 JavaScript 语句,但是我们一般用特定的自定义函数(function)来处理事情。

指定事件处理程序

指定事件处理程序有三种方法:

椒ㄒ?/b>直接在 HTML 标记中指定。这种方法是用得最普遍的。方法是:

<标记 ... ... 事件="事件处理程序" [事件="事件处理程序" ...]>

让我们来看看例子:

<body ... onload="alert('网页读取完成,请慢慢欣赏!')" onunload="alert('再见!')">

这样的定义<body>标记,能使文档读取完毕的时候弹出一个对话框,写着“网页读取完成,请慢慢欣赏”;在用户退出文档(或者关闭窗口,或者到另一个页面去)的时候弹出“再见”。

方法二 编写特定对象特定事件的 JavaScript。这种方法用得比较少,但是在某些场合还是很好用的。方法是:

<script language="JavaScript" for="对象" event="事件">

...

(事件处理程序代码)

...

</script>

例:

<script language="JavaScript" for="window" event="onload">

alert('网页读取完成,请慢慢欣赏!')

</script>

方法三 在 JavaScript 中说明。方法:

<事件主角 - 对象>.<事件>= <事件处理程序>

用这种方法要注意的是,“事件处理程序”是真正的代码,而不是字符串形式的代码。如果事件处理程序是一个自定义函数,如无使用参数的需要,就不要加“()”。例:

...

function ignoreError() {

return true

}

...

window.onerror = ignoreError// 没有使用“()”

这个例子将 ignoreError() 函数定义为 window 对象的 onerror 事件的处理程序。它的效果是忽略该 window 对象下任何错误(由引用不允许访问的 location 对象产生的“没有权限”错误是不能忽略的)。

事件详解

onblur 事件 发生在窗口失去焦点的时候。

应用于:window 对象

onchange 事件 发生在文本输入区的内容被更改,然后焦点从文本输入区移走之后。捕捉此事件主要用于实时检测输入的有效性,或者立刻改变文档内容。

应用于:Password 对象;Select 对象;Text 对象;Textarea 对象

onclick 事件 发生在对象被单击的时候。单击是指鼠标停留在对象上,按下鼠标键,没有移动鼠标而放开鼠<

【需要注意】虽然focus与blur不冒泡,但是却可以在捕获阶段侦听到它们。

只定义了div2即棕色的那个div的事件

【解释enter与leave】:当鼠标由粉移向棕色时,显示enter,鼠标由棕移向绿时,不显示leave与enter。当移出粉色时,显示leave。

【解释over与out】:当鼠标由粉移向棕色时,显示over,鼠标由棕移向绿时,显示out在显示over,鼠标由绿移向棕时,显示out载显示over。为什么会显示呢?是因为事件冒泡,由棕移向绿时会触发div3的over事件,但是div3并没有定义,所以向上冒泡到div2。所以会显示div2的over事件。

【总结】mouseenter与mouseleave是IE提出的事件,不冒泡。但是mouseover与mouseout事件则通过简单的e.stopPropagation()也无法避免冒泡的现象。