资源描述
经典的 Web 前端或者 JavaScript 面试笔试题
一、不定项选择题 (每题3分,共30分)
1. 声明一个对象,给它加上name属性和show方法显示其name值,以下代码中正确的是( )
A. var obj = [name:"zhangsan",show:function(){alert(name);}];
B. var obj = {name:”zhangsan”,show:”alert(this.name)”};
C. var obj = {name:”zhangsan”,show:function(){alert(name);}};
D. var obj = {name:”zhangsan”,show:function(){alert(this.name);}};
2. 以下关于Array数组对象的说法不正确的是( )
A. 对数组里数据的排序可以用sort函数,如果排序效果非预期,可以给sort函数加一个排序函数的参数
B. reverse用于对数组数据的倒序排列
C. 向数组的最后位置加一个新元素,可以用pop方法 最后添加push最后删除pop
D. unshift方法用于向数组删除第一个元素开头添加unshift最后删除shift
3. 要将页面的状态栏中显示“已经选中该文本框”,下列JavaScript语句正确的是( )
A. window.status=”已经选中该文本框”
B. document.status=”已经选中该文本框”
C. window.screen=”已经选中该文本框”
D. document.screen=”已经选中该文本框”
4. 点击页面的按钮,使之打开一个新窗口,加载一个网页,以下JavaScript代码中可行的是( )
A. <input type=”button” value=”new”
onclick=”open(?new.html?, ?_blank?)”/>
B. <input type=”button” value=”new”
onclick=”window.location=?new.html?;”/>
C. <input type=”button” value=”new”
onclick=”location.assign(?new.html?);”/>
D. <form target=”_blank”action=”new.html”>
<inputtype=”submit” value=”new”/>
</form>
5. 使用JavaScript向网页中输出<>hello</>,以下代码中可行的是( )
A. <scripttype=”text/javascript”>
document.write(<>hello</h1>);
</script>
B. <scripttype=”text/javascript”>
document.write(“<h1>hello</h1>”);
</script>
C. <scripttype=”text/javascript”>
<h1>hello</h1>
</script>
D. <h1>
<scripttype=”text/javascript”>
document.write(“hello”);
</script>
</h1>
6. 分析下面的代码:
<html>
<head>
<script type=”text/javascript”>
function writeIt (value) { document.myfm.first_text.value=value;}
</script>
</head>
<body bgcolor=”#ffffff”>
<form name=”myfm”>
<input type=”text” name=”first_text”>
<input type=”text” name=”second_text”>
</form>
</body>
</html>
以下说法中正确的是( )
A. 在页面的第二个文本框中输入内容后,当鼠标离开第二个文本框时,第一个文本框的内容不变
B. 在页面的第一个文本框中输入内容后,当鼠标离开第一个文本框时,将在第二个文本框中复制第一个文本框的内容
C. 在页面的第二个文本框中输入内容后,当鼠标离开第二个文本框时,将在第一个文本框中复制第二个文本框的内容
D. 在页面的第一个文本框中输入内容后,当鼠标离开第一个文本框时,第二个文本框的内容不变
7. 下面的JavaScript语句中,( )实现检索当前页面中的表单元素中的所有文本框,并将它们全部清空
A. for(vari=0;i< form1.elements.length;i++) {
if(form1.elements.type==”text”)
form1.elements.value=”";}
B. for(vari=0;i<document.forms.length;i++) {
if(forms[0].elements.type==”text”)
forms[0].elements.value=”";
}
C. if(document.form.elements.type==”text”)
form.elements.value=”";
D. for(vari=0;i<document.forms.length; i++){
for(var j=0;j<document.forms.elements.length; j++){
if(document.forms.elements[j].type==”text”)
document.forms.elements[j].value=”";
}
}
8. 在表单(form1)中有一个文本框元素(fname),用于输入电话号码,格式如:010-82668155,要求前3位是010,紧接一个“-”,后面是8位数字。要求在提交表单时,根据上述条件验证该文本框中输入内容的有效性,下列语句中,( )能正确实现以上功能
A. var str= form1.fname.value;
if(str.substr(0,4)!=”010-”|| str.substr(4).length!=8 ||
isNaN(parseFloat(str.substr(4)))) isNaN是否是非数值,true是非数值
alert(“无效的电话号码!”);
B. var str= form1.fname.value;
if(str.substr(0,4)!=”010-” && str.substr(4).length!=8 &
isNaN(parseFloat(str.substr(4))))
alert(“无效的电话号码!”);
C. var str= form1.fname.value;
if(str.substr(0,3)!=”010-”|| str.substr(3).length!=8 ||
isNaN(parseFloat(str.substr(3))))
alert(“无效的电话号码!”);
D. var str= form1.fname.value;
if(str.substr(0,4)!=”010-”&& str.substr(4).length!=8 &
!isNaN(parseFloat(str.substr(4))))
alert(“无效的电话号码!”);
9. 关于正则表达式声明6位数字的邮编,以下代码正确的是( )
A. var reg = /\d6/;
B. var reg = \d{6}\;
C. var reg = /\d{6}/;
D. var reg = new RegExp(“\d{6}”); 缺少/ /
10. 关于JavaScript里的xml处理,以下说明正确的是( )
A. Xml是种可扩展标记语言,格式更规范,是作为未来html的替代
B. Xml一般用于传输和存储数据,是对html的补充,两者的目的不同
C. 在JavaScript里解析和处理xml数据时,因为浏览器的不同,其做法也不同
D. 在IE浏览器里处理xml,首先需要创建ActiveXObject对象
11.以下哪些是javascript的全局函数:()
A.escape
B.parseFloat
C.eval //此外还有 unscape parseInt isNaN isFinite
D.setTimeout
E.alert
2、以下哪个单词不属于javascript保留字:(B)
A. with
B. parent
C. class
D. void
10、关于IE的window对象表述正确的有:(ACD)
A. window.opener属性本身就是指向window对象
B. window.reload()方法可以用来刷新当前页面 //应该是window.location.reload()方法
C. window.location=”a.html”和window.location.href=”a.html”的作用都是把当前页面替换成a.html页面
D. 定义了全局变量g;可以用window.g的方式来存取该变量
二、问答题
1. 列举浏览器对象模型里常用的至少4个对象,并列举window对象的常用方法至少5个 (10分)
对象:Window document location screen history navigator
方法:Alert() confirm() prompt() open() close()
2. 简述列举文档对象模型里document的常用的查找访问节点的方法并做简单说明 (10分)
Document.getElementById 根据元素id查找元素
Document.getElementByName 根据元素name查找元素
Document.getElementsTagName 根据指定的元素名查找元素
三、程序题
1、补充按钮事件的函数,确认用户是否退出当前页面,确认之后关闭窗口; (10分) <html>
<head>
<script type=”text/javascript” >
function closeWin(){
//在此处添加代码
if(confirm(“确定要退出吗?”)){
window.close();
}
}
</script>
</head>
<body>
<input type=”button” value=”关闭窗口”onclick=”closeWin()”/>
</body>
</html>
2、写出简单描述html标签(不带属性的开始标签和结束标签)的正则表达式,并将以下字符串中的html标签去除掉(15分)
var str = “<div>这里是div<p>里面的段落</p></div>”;
//
<scripttype=”text/javascript”>
var str = “<div>这里是div<p>里面的段落</p></div>”;
var reg=/<\/? \w+ \/?>/gi;
alert(str.repalce(reg,” ”));
</script>
3、完成foo()函数的内容,要求能够弹出对话框提示当前选中的是第几个单选框。(10分) <html>
<head>
<metahttp-equiv=”Content-Type” content=”text/html;charset=utf-8″ />
</head>
<body>
<script type=”text/javascript” >
function foo() {
//在此处添加代码
var oradio=document.getElementsByName(“radioGroup”);
for(var i=0;i<oraio.length;i++){
if(oradio[i].checked==”true”)
alert(“你点击的是第”+(i+1)+”个单选框”);
}
</script>
<body>
<form name=”form1″ onsubmit=”fool()”>
<input type=”radio” name=”radioGroup”/>
<input type=”radio” name=”radioGroup”/>
<input type=”radio” name=”radioGroup”/>
<input type=”radio” name=”radioGroup”/>
<input type=”submit”/>
</form>
</body>
</html>
4、完成函数showImg(),要求能够动态根据下拉列表的选项变化,更新图片的显示 (15分) <body>
<script type=”text/javascript” >
function showImg (oSel) {
//在此处添加代码
document.getElementById(“pic”).src= oSel.value+”.jpg”;
}
</script>
<img id=”pic” src=”img1.jpg” />
<br />
<select id=”sel” onchange=showImg(this)>
<option value=”img1“>城市生活</option>
<option value=”img2“>都市早报</option>
<option value=”img3“>青山绿水</option>
</select></body>
9、form中的input可以设置readonly和disable,请问这两项属性有什么区别?
readonly不可编辑,但可以选择和复制
disable不能编辑复制选择
10、JS中的三种弹出式消息提醒(警告窗口、确认窗口、信息输入窗口)的命令是什么?
alert
confirm
prompt
5.列举javaScript的3种主要数据类型,2种复合数据类型和2种特殊数据类型。
主要数据类型:string, boolean, number
复合数据类型:function, object
特殊数据类型:null ,underfined
9.程序中捕获异常的方法?
window.error
try{}catch(){}finally{}
16.截取字符串abcdefg的efg
'abcdefg'.substring(4)
17.写出函数DateDemo的返回结果,系统时间假定为今天
function DateDemo(){
var d, s="今天日期是:";
d = new Date();
s += d.getMonth() + 1+"/";
s += d.getDate() + "/";
s += d.getYear();
return s;
}
结果:今天日期是:7/17/2010
18.写出程序运行的结果?
for(i=0, j=0; i<10, j<6; i++, j++){
k = i + j;
}
结果:10(小心陷阱)
19.运行的结果?
function hi(){
var a;
alert(a);
}
结果:undefined
14.浏览器的对象模型?
window
顶级对象
window.alert(msg)
window.prompt()
window.confirm()
if(window.confirm()){
...
}
window.open()
window.close()
document
document.write()
history
当用户浏览网页时,浏览器保存了一个最近所访问网页的url列表。这个列表就是用history对象表示。
history.back():后退
history.forward():前进
history.go(n):正数表示向前,负数表示向后
location
表示当前打开的窗口或框架的URL信息。
location.href:重定向
等价于location.assign(url)
location.host:类似:80
navigator
表示浏览器的信息及js运行的环境
navigator.cookieEnabled:该属性表示是否启用cookie
screen
用于显示网页的显示器的大小和颜色
screen.width/screen.height:表示显示器的分辨率(总的宽度,高度)
21XMLHTTPRequest对象是什么?
Ajax原理
22.超链接的属性target的可选值:_blank, _parent, _self, _top和框架名称有什么区别?
-blank 在新的页面窗口中打开 –parent在父类页面窗口中打开 –self在当前页面窗口中打开 –top在当前整个浏览器窗口中打开
23.javascript的常用对象有哪些?
String, Math, Date和Array对象
四、编程题:
2、填充注释部分的函数体,使得foo()函数调用弹出”成功”的对话框。代码应尽量简短。
function reverse(str) {
// 在此处加入代码,完成字符串翻转功能
return str.split(",").reverse().join(",");
}
<html>
<head>
<script>
function foo()
{
var str = reverse('a,b,c,d,e,f,g');
alert(str);
if (str == 'g,f,e,d,c,b,a')
alert('成功');
else alert('失败');
}
function reverse(str)
{
// 在此处加入代码,完成字符串翻转功能
var spl = str.split(',');
var newstr="";
for(i=spl.length-1;i>=0;i--)
{
newstr+=spl[i]+',';
}
newstr=newstr.substring(0,newstr.length-1)
return newstr;
}
</script>
</head>
<body>
<input type="button" value="str" onclick="foo()" />
</body>
</html>
1编写一个方法 求一个字符串的字节长度
法1:<script language=”javascript” type=”text/javascript”>
new function(s)
{
if(!arguments.length||!s) return null;
if(”"==s) return 0;
var l=0;
for(var i=0;i<s.length;i++)
{ if(s.charCodeAt(i)>255) l+=2;
else l++;
}
alert(l);
}
</script>
法2:var str = '22两是';
alert(getStrlen(str))
function getStrlen(str){
var json = {len:0};
var re = /[\u4e00-\u9fa5]/; 、、至少匹配一个汉字的写法
for (var i = 0; i < str.length; i++) {
if(re.test(str.charAt(i))){ 、、test 方法返回一个 Boolean 值,它指出在被查找的字符串中是否匹配给出的正则表达式。
json['len']++;
}
};
return json['len']+str.length;
}*/
3、用脚本写去除字符串的前后空格
String.prototype.trim = function(mode)
{//前后去空格
if (mode==’left’)
{return ((this.charAt(0) == ” “ && this.length > 0) ? this.slice(1).trim(’left’) : this);}
else
if (mode == ’right’)
{
return ((this.charAt(this.length - 1) == ” “ && this.length > 0) ? this.slice(0, this.length - 1).trim(’right’) : this);
}
else
{ return this.trim(’left’).trim(’right’);}
};
3,判断一个字符串中出现次数最多的字符,统计这个次数
/*var str = 'asdfssaaasasasasaa';
var json = {};
for (var i = 0; i < str.length; i++) {
if(!json[str.charAt(i)]){
json[str.charAt(i)] = 1;
}else{
json[str.charAt(i)]++;
}
};
var iMax = 0;
var iIndex = '';
for(var i in json){
if(json[i]>iMax){
iMax = json[i];
iIndex = i;
}
}
alert('出现次数最多的是:'+iIndex+'出现'+iMax+'次');
json[1]未定义是假的,之前出现过也就是为假,现在加 非就变成了真
9,编写一个方法 去掉一个数组的重复元素
var arr = [1,2,3,1,43,12,12,1];
var json = {};
var arr2 = [];
for (var i = 0; i < arr.length; i++) { // json[1]未定义是假的,之前出现过也就是为假,现在加
if(!json[arr[i]]){ // 因为if里有!,所以json[1]第一次出现就是true,第二次出现结果就是false
json[arr[i]] = true;
}
else {
json[arr[i]] = false;
}
if(json[arr[i]]){
arr2.push(arr[i]); //最后的arr2结果是1,2,3,43,12,1
}
}
for (var i = 0; i < arr.length; i++) {
if(!aa(arr[i], arr2)){
arr2.push(arr[i])
}
};
function aa(obj, arr){
for (var i = 0; i < arr.length; i++) {
if(arr[i] == obj) return true;
else return false;
};
}
alert(arr2);
展开阅读全文