前端笔试题总结---持续更新
写在前面:。。。。
1字符串逆序
function reverse(str){ return str.split("").reverse().join("");//直接用函数 var str1="";//从后向前输出 for(var i=str.length-1;i>=0;i--){ str1+=str[i]; } return str1; var len=str.length;//字符串原地逆序 for(var i=0;i<len;i++){ str[i]=str[len-1-i]; } return str; }
2弹出对话框提示当前选中的是第几个单选框
<input type="radio" name="radioGroup" onclick="foo()"/> <input type="radio" name="radioGroup" onclick="foo()"/> <input type="radio" name="radioGroup" onclick="foo()"/> <input type="radio" name="radioGroup" onclick="foo()"/> <input type="radio" name="radioGroup" onclick="foo()"/>
function foo(){ var reg=document.getElementsByName("radioGroup"); //获取一组有相同名称的单选框dom对象 for(var i=0;i<reg.length;i++){ if(reg[i].checked){ alert("第"+(i+1)+"单选框"); } } }
3求y和z 的值是多少?
var x = 1; var y = 0; var z = 0; function add(n){n=n+1;} y = add(x); //alert(y); function add(n){n=n+3;} z = add(x); //alert(z);
//题目分析,此题的陷阱在于函数都没有返回值。所以赋值后都是undefined。若给函数都加上return,其结果都将变成4,这是因为后面同名称的函数会覆盖前面一个。
4如何获取表单<select>(下拉列表)域的选择部分的文本和value值?
<select size="1" onchange="sel(this)"> <option value="a">1</option> <option value="b">2</option> <option value="c">3</option> </select>
function sel(obj){ var obj=document.getElementsByTagName("select"); //select下是一个options数组,拥有change事件的还有text和textarea alert("文本为:"+obj.options[obj.selectedIndex].text); alert("值为:"+obj.options[obj.selectedIndex].value); }
5javascript怎样选中一个checkbox,怎样设置它无效和不能选择?
function check(){ var obj=document.getElementsByName("cb1"); for(var i=0;i<obj.length;i++){ obj[i].checked="true";//某一个选中 obj[i].disabled="true";//选择失效 }
6全选(或者全不选)的所有指定名称的checkbox
function option(state,name){ var obj=document.getElementsByName("name"); for(var i=0;i<obj.length;i++){ obj[i].checked=state; } }
7全选(或者全不选)的所有的checkbox
function selectAll(state){ var obj=document.getElementsByTagName("input"){//获取所有的input标签对象 for(var i=0;i<obj.length;i++){ if(obj[i].type="checkbox"){//过滤出我们需要的checkbox类型 obj[i].checked=state; } } } }
8全选指定值(可能有多个值,以逗号分隔)的checkbox
function select(value,name){ var obj=document.getElementsByName("name"){ var values=value.split(",")//把字符串转化为数组 for(var i=0;i<values.length;i++){ for(var j=0;j<obj.length;j++){ if(obj[j].value==values[i]){//对每一个指定的值做判断 obj[j].checked=true; } } } } }
9补充按钮事件的函数,确认用户是否退出当前页面,确认之后关闭窗口;
function confirm(){ if(confirm("确认退出?")){ window.close(); } }
10 写出简单描述html标签(不带属性的开始标签和结束标签)的正则表达式,并将以下字符串中的html标签去除掉
var str = "<div>这里是div<p>里面的段落</p></div>";
function replaceReg(str){ var reg = /<\/?\w+\/?>/gi;//这里\/是转义/防止与正则表达式的结束符冲突,后面的问号是可选(起始标签和结束标签),后面的可选是匹配单标签<br/>等。这是个全局匹配,标签部分大小写 alert(str.replace(reg,""));//字符串替换函数 }
11将文档中className有“test”的td标签背景色设为黄色
var obj=document.getElementsByTagName("td"); for(var i=0;i<obj.length;i++){ if(obj[i].className.indexOf("test")!=-1){ obj[i].style.backgroundColor="yellow"; } }
12用javascript实现控制一个文本框的输入字数限制,超出字数限制文本框边框飘红显示
var oInput=document.getElementById("a"); oInput.onkeyup=function(){ this.style.border=this.value.length>5?"1px solid red":""; }
13让文本输入框的宽度随着里面的内容多少自动伸缩自适应
var oInput = document.getElementById("autoInput"); var sSize = oInput.getAttribute("size"); oInput.onkeydown = function(){ var sInputValue = oInput.value; if(sInputValue === "" || sInputValue.length <= sSize || sInputValue.length > 60){ return; } else{ oInput.setAttribute("size",sInputValue.length); } }
14使用Javascript打印出1-10000之间的所有素数
function sushu(num){ var flag=true; for(var i=2;i<num;i++){ if(num%i==0){ flag=false; break; } } return flag; } var arr=[1] for(var i=3;i<=1000;i++){ var k=sushu(i); if(k){ arr.push(i); } }
15 我们把一个数字倒着读和原数字相同的数字称之为对称数,(例如1,121,88,8998),不考虑性能,请找出1—10000之间的对称数
function duichen(num){ var flag=false; var str=num.toString(); var str1=""; for(var i=str.length-1;i>=0;i--){ str1+=str[i]; } if(str==str1){ flag=true; }else{ flag=false; } return flag; } alert(duichen(121)); var arr=[]; for(var i=1;i<=1000;i++){ var k=duichen(i); if(k){ arr.push(i); } }
16setTimeout调用函数
var obj=function(msg){ this.msg=msg; this.shout=function(){ alert(this.msg); } this.waitAndShout=function(){ //每隔五秒调用上面的shout方法 var self=this; //由于setTimeout是全局方法,其this指向window,用that保存当前的执行上下文 setTimeout(function(){ self.shout(); },1000) } }
17把字符串转化为JSON对象
var str="haha=123&hehe=234&key=456"; var arr=str.split("&"); var obj={}; for(var i=0;i<arr.length;i++){ var arr1=arr[i].split("="); obj[arr1[0]]=arr1[1]; }
18在匿名函数中调用自身,例如实现阶乘
var a=(function (num){ if(num==1){ return 1; }else{ return num*arguments.callee(num-1)//调用函数自身 } })(5);
19截取字符串abcdefg的efg
var str="abcdefg"; if(/efg/.test(str)){ var str1=str.slice(str.indexOf("efg")) ; //字符串切割用slice。获取子字符串在源字符串中的位置用indexOf }
20判断一个字符串中出现次数最多的字符,统计这个次数
var str="abcdefgacda"; function findMax(str){ var obj={}; for(var i=0;i<str.length;i++){ if(!obj[str[i]]){ obj[str[i]]=1; }else{ obj[str[i]]+=1; } } var max=0; var s; for(var key in obj){ if(obj[key]>max){ max=obj[key]; s=key; } } var str="字符是:"+s+"频率是:"+max; alert(str); }
21去除数组中的重复元素
function unique(a){ var obj={}; var result=[]; for(var i=0;i<a.length;i++){ if(!obj[a[i]]){ obj[a[i]]=1; result.push(a[i]); } } alert(result); }
22简单实现js中继承
function Animal(name){ this.name=name;//共有属性 } Animal.prototype.getName=function(){ alert(this.name); } function Dog(name,age){ Animal.call(this,name);//继承属性 this.age=age;//自己的方法 } Dog.prototype=new Animal(); Dog.prototype.contructor=Dog; Dog.prototype.getAge=function(){ alert(this.age);//自己的方法 } var xiaogou=new Dog("xiao",21); xiaogou.getName(); xiaogou.getAge();
24FF要实现outerHTML还需要特殊处理
function getOutHtml(id){ var el=document.getElementById("id"); var oDiv=document.createElement("div"); var htm=el.cloneNode(true); oDiv.appendChild("htm"); var result=oDiv.innerHTML; document.removeChild("oDiv"); }