在CSDN上看到一个帖子,通过属性设置DOM对象的事件在IE6下没有作用,于是在google上搜了下,得知IE6绑定事件有些差异。
对于各个浏览器的差异,可以看这篇文章:
http://blog.chinaunix.net/u1/54739/showart_432024.html
还好找到一个兼容的函数,做了一个简单的测试,特分享如下:
在页面上有一个Add按钮,点击按钮触发函数?addFile,添加一个文件选择框到页面,每个文件选择框附带一个移除按钮,点击移除按钮就可以删除这个文件选择框。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <script type="text/javascript"> var btnID = 1; function addFile() { var div = document.createElement("div"); var f = document.createElement("input"); f.setAttribute("type", "file") f.setAttribute("name", "File") f.setAttribute("size", "50") div.appendChild(f) var d = document.createElement("input"); //绑定onclick删除 d.setAttribute("type", "button") d.setAttribute("id", "deteFileBtn_" + btnID); d.setAttribute("value", "移除") div.appendChild(d) document.getElementById("_container").appendChild(div); var args = new Object(); args.id = "deteFileBtn_" + btnID; AttachEvent(document.getElementById("deteFileBtn_" + btnID), "click", deteFile, args); btnID++; } //删除选中 function deteFile() { var o = document.getElementById(this.id); while (o.tagName != "DIV") o = o.parentNode; o.parentNode.removeChild(o); } function AttachEvent(target, eventName, handler, argsObject) { var eventHandler = handler; if (argsObject) { eventHander = function (e) { handler.call(argsObject, e); } } if (window.attachEvent)//IE target.attachEvent("on" + eventName, eventHander); else//FF target.addEventListener(eventName, eventHander, false); } </script> </head> <body> <form id="form1" runat="server"> <div> <input id="Button1" type="button" value="Add" onclick="addFile()" /> <div id="_container"> </div> </div> </form> </body> </html>
兼容函数: AttachEvent,兼容IE5.5,IE6,IE7,IE8,Opera,Firefox,Chrome等
有四个参数:
target 要绑定事件的DOM对象
eventName 要绑定的事件名称,事件前边不要加“on”
handler 要触发的函数
argsObject ?函数中使用的参数
关键字: 绑定事件
发表评论
相关文章
国内AI资源汇总,AI聊天、AI绘画、AI写作、AI视频、AI设计、AI编程、AI音乐等,国内顺畅访问,无需科学上网。
扫码或点击进入:萤火AI大全
文章分类
最新评论