JavaScript 实现自定义按钮类及事件绑定
作者:页面旅途时间:2026-10-28 21:52:25浏览:668
本文介绍如何在 JavaScript 中通过面向对象方式实现一个自定义按钮类。代码展示了如何初始化按钮属性,并使用 bindEvent 函数为按钮绑定 show 和 click 事件,触发时弹出对应提示。该方法适用于需要封装交互逻辑的前端开发场景。
JavaScript 自定义按钮实现与事件绑定
本文介绍了在 JavaScript 中实现自定义按钮的具体方法,供读者参考。核心实现逻辑如下:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="edge">
<script>
window.onload = function(){
var btn = new Btn();
btn.init({width:300});
bindEvent(btn,'show',function(){
alert(1);
})
bindEvent(btn,'click',function(){
alert(2);
})
var oBtn = document.getElementById('btn');
oBtn.onclick = function (){
fireEvent(btn,'show');
}
}
function Btn(){
this.btn= null;
this.settings = {
width:200,
height:40,
borderRadius:6,
text :'按钮'
};
}
Btn.prototype.init = function (opt){
extend(this.settings,opt);
this.creat();
}
Btn.prototype.creat = function (){
this.btn =document.createElement('div');
document.body.appendChild(this.btn);
this.btn.innerHTML = this.settings.text;
this.setData();
}
Btn.prototype.destory = function (){
document.body.removeChild(this.btn);
}
Btn.prototype.setData = function (){
this.btn.style.width = this.settings.width +'px';
this.btn.style.height = this.settings.height +'px';
this.btn.style.border ='solid #f00 '+ this.settings.borderRadius +'px';
}
function extend(obj1,obj2){
for(var attr in obj2){
obj1[attr] = obj2[attr];
}
}
function bindEvent(obj,events,fn){
obj.listeners = obj.listeners || {};
obj.listeners[events] = obj.listeners[events] || [];
obj.listeners[events].push( fn );
if(obj.nodeType){
if(obj.addEventListener){
obj.addEventListener(events,fn,false);
}else{
obj.attachEvent('on'+events,fn);
}
}
}
function fireEvent (obj,events){
if(obj.listeners[events]){
for(var i in obj.listeners[events]){
obj.listeners[events][i]();
}
}
}
</script>
</head>
<body>
<a id="btn" style="margin-top: 40px;" >12</a>
</body>
</html>
希望这段关于 JavaScript 程序设计的代码示例能对大家有所帮助。
作者最新文章
JS监听滚动事件:回到顶部按钮的显示与隐藏逻辑
2026-11-05 16:19:37
JavaScript怎么读写LocalStorage与SessionStorage
2026-11-05 15:40:11
anime.js 与 GSAP 对比:轻量级项目该怎么选择动画库
2026-11-05 11:24:55
flv.js 与 hls.js 在直播场景下的选型对比
2026-11-05 08:18:52
JavaScript能做什么?前端开发中的作用与应用场景解析
2026-11-04 23:17:54
