一些前端笔试总结
来源:互联网 发布:光盘菜单制作软件 编辑:程序博客网 时间:2024/04/29 18:51
1. 循环绑定事件
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title></head><body> <ul> <li>111</li> <li>2222222</li> <li>33333333333</li> </ul> <script> // 事件绑定中涉及的变量取值为最终的值,下面i最终取oLi.length var oUl = document.getElementsByTagName('ul')[0]; var oLi = oUl.getElementsByTagName('li'); for(var i=0; i<oLi.length; i++){ oLi[i].onclick = function(){ alert(i);//输出结果无论点击谁都是3,而不是我们想要的0,1,2 } } </script></body></html>解决方案:第一种<script> // 加一层闭包,i以函数参数形式传递给内层函数 var oUl = document.getElementsByTagName('ul')[0]; var oLi = oUl.getElementsByTagName('li'); for(var i=0; i<oLi.length; i++){ (function(val){ oLi[val].onclick = function(){ alert(val);//输出结果是0,1,2 } })(i); }</script>第二种<script> <pre name="code" class="html"> // 加一层闭包,i传给局部变量 var oUl = document.getElementsByTagName('ul')[0]; var oLi = oUl.getElementsByTagName('li'); for(var i=0; i<oLi.length; i++){ (function(){ var val = i; oLi[val].onclick = function(){ alert(val);//输出结果是0,1,2 } })(); }</script>2. bind函数的原生js实现 参考
Function.prototype.bind = function (oThis) { if (typeof this !== "function") { throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable"); } var aArgs = Array.prototype.slice.call(arguments, 1), fToBind = this, fNOP = function () {}, fBound = function () { return fToBind.apply( this instanceof fNOP && oThis ? this : oThis || window, aArgs.concat(Array.prototype.slice.call(arguments)) ); }; fNOP.prototype = this.prototype; fBound.prototype = new fNOP(); return fBound; };3. 表单有哪些相关标签
form, input, label, select, option, textarea, fieldset, legend, optgroup, button
4. 一个数组['a','a','b','b','b','c','c','c','c'],写一个通用函数,输出其中数量最多的元素名称及次数
function arr_max(arr){ // 先对数组进行排序,将相同元素放在一起 arr.sort(); // 设置新数组,存放元素名称和数量 var result = [{name:arr[0], count:1}]; // 设置一个变量,始终指向result中正在处理的对象 var index=0; // 遍历目标数组 for(var i=0, arr_len=arr.length; i<arr_len-1; i++){ if(arr[i]!=arr[i+1]){ result.push( {name:arr[i+1], count:1} ); index++; }else{ result[index].count += 1; } } // 对result数组进行排序,按照元素的count属性大小,降序 result.sort(function(a, b){ return b.count - a.count; }); var output = '元素' + result[0].name; for(var j=0, result_len = result.length; j<result_len-1; j++){ if(result[j].count === result[j+1].count){ output += ',' + result[j+1].name; }else{ break; } } output += '出现次数最多,为' + result[0].count + '次' return output;}var arr = ['a','a','c','c','d','d','a','c','d'];arr_max(arr)
5. 两列布局,左边固定320px,右边自适应
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>两列布局</title> <style> /*设置了高度和背景,便于看出结果*/ .left{ width: 320px; height: 600px; float: left; background-color: green; margin-right: -320px; } .right{ width: 100%; float: right; } .r-box{ margin-left: 320px; height: 600px; background-color: red; } </style></head><body> <div class="left"></div> <div class="right"> <div class="r-box"></div> </div></body></html>
6. HTTP在状态码为302时,会产生两次http请求。
301,302 都是HTTP状态的编码,都代表着某个URL发生了转移,不同之处在于:
301 redirect: 301 代表永久性转移(Permanently Moved)。
302 redirect: 302 代表暂时性转移(Temporarily Moved )。302转向可能会有URL规范化及网址劫持的问题。可能被搜索引擎判为可疑转向,甚至认为是作弊。
0 0
- 一些前端笔试总结
- YY前端笔试总结
- 前端笔试题总结
- 一些笔试题总结
- 一些笔试总结
- 前端面笔试题总结
- 【JS】前端笔试题总结 ?
- 【CSS】前端笔试题总结
- 【其他??】前端笔试题总结
- 【数据结构 ?】前端笔试题总结
- [转载]阿里前端笔试总结
- web前端一些总结
- 笔者总结的一些前端面试笔试试题(仅供参考,如果错误,望指教)--1
- 笔者总结的一些前端面试笔试试题(仅供参考,如果错误,望指教)--2
- 笔试的一些小总结
- 阿里前端笔试总结--H5面试题
- 前端笔试总结---函数偏点
- 前端笔试题总结(一)
- mysql数据库迁移到db2数据库
- redhat5.8安装oracle11g---1
- 重装Eclipse、离线安装ADT、Android SDK
- Spring读取properties方式
- c++关于动态加载Dll.
- 一些前端笔试总结
- php中字符串函数
- null与空串引发的分组计算错误
- 前向渲染 延迟渲染
- 数据库表分割技术:水平分割、垂直分割、库表散列
- 这是一个没有现金的国家——丹麦
- 【openssl】openssl安装以及编译使用
- CSS中字体单位的说明
- boost::thread