前一个多月公司的前端开发人员离职,公司一直在招前端,基本上每天都有几个来面试的人,就这个面试频率,也才招了一个多月才招到。绝大部分都是死在了一道上机面试提上。题目很基础,但也很考基本功,基本上才3%左右的人做出来。当时我就在想以我的半吊子前端知识挑战一下这个题目。之前一直忙着把Android项目弄上线,修改bug,一直没时间。现在国庆节放假,发了一天时间把前端又看了下,然后理所当然的就写出来了,功能虽然完成了,但代码不怎么优雅。
题目是说有一个html页面,页面有一个按钮,点击这个按钮,弹出一个框说自己是几号按钮,并询问是否生成新按钮。 点是生成一个新按钮,新按钮也能继续响应点击事件,生成新按钮。如图
点击弹框如图。
点确定,生成新按钮,点击新按钮能继续弹窗问是否生成新按钮。并报自己是几号按钮。
分析下这道题发现难点在将生成的新按钮绑定点击事件,并能监听自己是几号按钮。解决办法是用js动态插入html代码,在插入的html代码中绑定点击事件。然后在点击事件中获取页面中所有按钮,为每一个按钮设置一个属性,用来标记自己是几号按钮。代码如下。其实也很简单的。如果有更简洁逼格更高的写法,欢迎讨论。
<!DOCTYPE html><html><head><meta charset="utf-8"><title>测试</title><head><body><input name="按钮" type="button" onClick="clic()" value="按钮"></input><div id="content"></div><script type="text/javascript">clic();function clic(){var bs = document.getElementsByTagName("input");for(var i=0;i<bs.length;i++){var b = bs[i];b.setAttribute("aaa",i);b.onclick = function(){var s = confirm("我是"+this.getAttribute("aaa")+"号按钮,是否生成新按钮");if(s){document.getElementById("content").innerHTML += "</br><input name=\"按钮\" type=\"button\" onClick=\"clic()\" value=\"按钮\"><\/input>";clic();}};}}</script></body></html>
小细节:1:在js代码里要手动掉一次clic方法。不然第一个按钮点两次才有反应。2:innerHtml里面对于“ " ”和“/”要进行转义。
希望大家多多支持我的小程序
如果觉得《javascript动态生成按钮并绑定点击事件》对你有帮助,请点赞、收藏,并留下你的观点哦!