HardBirch

JavaScript动态事件以及闭包问题的解决

时间:09-06-16 栏目:iOS移动应用开发技术 作者:张飞不张,文采横飞 评论:0 点击: 1,331 次

关键字:JavaScript 动态事件闭包

本文简单JavaScript动态事件,以及在使用动态事件时解决JavaScript闭包问题(“闭包”这个词是从网上看到,不知道是否准确)。

需求描述:当鼠标移动到行上时该行背景色高亮显示,鼠标移开时背景色恢复正常。

1.      下面的实现不涉及JavaScript动态事件,代码如下:

 
















function removeBC(obj){
obj.className="";
}
// --></mce:script>
</head>
<body>
<center>
<table id="mytable">
<tr onmouseover="setBC(this);" onmouseout="removeBC(this);">
<td>aaaaaa</td>
<td>bbbbbb</td>
</tr>
<tr onmouseover="setBC(this);" onmouseout="removeBC(this);">
<td>cccccc</td>
<td>dddddd</td>
</tr>
</table>
</center>
</body>
</html>


2.      如果展示页面使用了展示组件(比如:Displaytag),那么页面内就没有<tr>这样的标签,只有生成HTML源代码时才会有<tr>,这种情况下需要使用JavaScript动态事件。

代码如下(该代码有问题):

 














































 


3.      上面示例中问题的解决方法:

将上面JavaScript方法修改为如下所示:






var removeBColor = function(obj){
return function(){
obj.className=""
}
}

function setBC(){
var table = document.getElementById("mytable");
//var trRows = document.all("mytable").rows;
var trRows = table.rows;
var rows=new Array();
for(var i=0;i<trRows.length;i++){
var row = trRows[i];
//row.attachEvent("onmouseover",setBColor(row));
//row.attachEvent("onmouseout",removeBColor(row));
row.onmouseover=setBColor(row);
row.onmouseout=removeBColor(row);
}
}
// --></mce:script>

声明: 本文由( 张飞不张,文采横飞 )原创编译,转载请保留链接: JavaScript动态事件以及闭包问题的解决

JavaScript动态事件以及闭包问题的解决:等您坐沙发呢!

发表评论


QQ群互动

Linux系统与内核学习群:194051772

WP建站技术学习交流群:194062106

魔豆之路QR

魔豆的Linux内核之路

魔豆的Linux内核之路

优秀工程师当看优秀书籍

优秀程序员,要看优秀书!

赞助商广告

友荐云推荐