前一个多月公司的前端开发人员离职,公司一直在招前端,基本上每天都有几个来面试的人,就这个面试频率,也才招了一个多月才招到。绝大部分都是死在了一道上机面试提上。题目很基础,但也很考基本功,基本上才3%左右的人做出来。当时我就在想以我的半吊子前端知识挑战一下这个题目。之前一直忙着把Android项目弄上线,修改bug,一直没时间。现在国庆节放假,发了一天时间把前端又看了下,然后理所当然的就写出来了,功能虽然完成了,但代码不怎么优雅。

         题目是说有一个html页面,页面有一个按钮,点击这个按钮,弹出一个框说自己是几号按钮,并询问是否生成新按钮。 点是生成一个新按钮,新按钮也能继续响应点击事件,生成新按钮。如图

javascript怎么设置button格式 javascript怎么设置按钮_javaScript

点击弹框如图。

javascript怎么设置button格式 javascript怎么设置按钮_动态生成_02

点确定,生成新按钮,点击新按钮能继续弹窗问是否生成新按钮。并报自己是几号按钮。

javascript怎么设置button格式 javascript怎么设置按钮_点击事件_03

分析下这道题发现难点在将生成的新按钮绑定点击事件,并能监听自己是几号按钮。解决办法是用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>