zoukankan      html  css  js  c++  java
  • 阿里巴巴17实习生招聘编程题目(JavaScript解法)

    题目:完成一个类似于自己编写的选择框。30分钟瞎写了一通,后来整理代码如下。

    原型题目
    <!DOCTYPE html>
    <head>
      <meta charset="UTF-8">
      <title>body</title>
      <style>
    	  /* your code here */
      </style>
    </head>
    <body>
      <div id="select"></div>
    
      <script>
    	function select(options){
    	  // your code here
    	}
    	
    	// eg
    	select({
    	  srcNode: '#select',
    	  data: ['北京','上海','杭州'],
    	  onChange: (ev)=>{
    	    console.log(ev.value); 
    	  }
    	})
      </script>
    </body>
    </html>
    

      其中 youcodehere则为自己编写代码部分

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8" />
    		<title>阿里巴巴17校招测试题目</title>
    		<style type="text/css">
    		*{padding: 0;margin: 0;}
    		ul{border: 1px solid #ccc;display: none;}
    		ul li{list-style: none;cursor: pointer;}
    		body{font-family: "微软雅黑";font-size: 14px; padding: 100px;}
    		.select{ 100px;height: 14px; }	
    		.select input{ 98%;height:100%;text-indent: 0.5em;margin-left: -1px;margin-top: -1px;}	
    		</style>
    	</head>
    	<body>
    		<div class="select" id="select"></div>
    	</body>
    	<script type="text/javascript">
    		function select(options){
    			//获取DIV对象
    			var seleDom = document.getElementById(options.srcNode.replace("#",""));
    			//构造DIV内部元素
    			var html = "<input/><ul>"
    			var datas = options.data;
    			for (i=0;i<datas.length;i++) {
    				html+="<li>"+datas[i]+"</li>";
    			}
    			html+= "</ul>";
    			//DIV添加
    			seleDom.innerHTML = html;
    			//单击INPUT框时,修改DISPALAY
    			//获取INPUT对象
    			var inputobj = document.getElementsByTagName('input');
    			var input = inputobj[0];
    			//获取UL对象
    			var ulDom = document.getElementsByTagName('ul');			
    			input.onfocus = function(e){
    				//显示
    				ulDom[0].style.display ="block";
    				//为每一个LI绑定点击事件
    				var liDoms = document.getElementsByTagName('li');
    				for (i=0;i<liDoms.length;i++) {
    					liDoms[i].onclick = function(e){
    						e.value = this.innerHTML;
    						options.onChange(e,input);
    						//点击后取消DISPLAY
    						ulDom[0].style.display ="none";						
    					}					
    				}				
    			}
    		};						
    		// eg
    	select({
    	  srcNode: '#select',
    	  data: ['北京','上海','杭州'],
    	  onChange:function(ev,input){
    			input.value = ev.value;   	
    	  }
    	});
    	</script>
    </html>
    

     此版本为JS版本,明天上传JQ版本的解法

  • 相关阅读:
    webpack 配置别名,解决 import 时路径查找麻烦的问题
    Vue 中 diff 算法后更新 DOM 的方法
    React Native 开发环境搭建
    JavaScript 堆排序详解
    JavaScript 快速排序详解
    websocket 心跳重连
    AJAX 请求后使用 JS 打开新标签页被阻止的解决方法
    auto.js环境搭建
    Mac os 创建pppoe拨号
    mac os IntelliJ IDEA搭建环境
  • 原文地址:https://www.cnblogs.com/lishengjun/p/6556290.html
Copyright © 2011-2022 走看看