15、正则表达式构造函数var reg=new RegExp(“xxx”)与正则表达字面量var reg=//有什么不同?匹配邮箱的正则表达式?
当使用RegExp()构造函数的时候,不仅需要转义引号(即\”表示”),并且还需要双反斜杠(即\表示一个\)。使用正则表达字面量的效率更高。
邮箱的正则匹配:
var regMail = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/; | |
---|---|
16、看下面代码,给出输出结果。
for(var i=1;i<=3;i++){
setTimeout(function(){
console.log(i);
},0);
};
//4 4 4 4
原因:Javascript事件处理器在线程空闲之前不会运行。追问,如何让上述代码输出1 2 3?
for(var i=1;i<=3;i++){
setTimeout((function(a){ //改成立即执行函数
console.log(a);
})(i),0);
};
1 //输出
2
3
16、写出一个function,清除字符串前后的空格。(兼容所有浏览器)
使用自带接口trim(),考虑兼容性:
if (!String.prototype.trim) {
String.prototype.trim = function() {
return this.replace(/^\s+/, "").replace(/\s+$/,"");
}
}
// test the function
var str = " \t\n test string ".trim();
alert(str == "test string"); // alerts "true"
17、Javascript中,以下哪条语句一定会产生运算错误?(B)
A、 var _变量=NaN;B、var 0bj = [];C、var obj = //; D、var obj = {};
18、以下两个变量a和b,a+b的哪个结果是NaN? 答案( C )
A、var a=undefind; b=NaN
B、var a=‘123’; b=NaN
C、var a =undefined , b =NaN
D、var a=NaN , b=‘undefined’
19、var a=10; b=20; c=4; ++b+c+a++ 以下哪个结果是正确的?答案( B )
A、 34 B、35 C、36 D、37
20、下面的JavaScript语句中,( D )实现检索当前页面中的表单元素中的所有文本框,并将它们全部清空
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=”";
}
}
21、要将页面的状态栏中显示“已经选中该文本框”,下列JavaScript语句正确的是( A )
A. window.status=”已经选中该文本框”
B. document.status=”已经选中该文本框”
C. window.screen=”已经选中该文本框”
D. document.screen=”已经选中该文本框”
22、以下哪条语句会产生运行错误:(A)
A.var obj = ();
B.var obj = [];
C.var obj = {};
D.var obj = //;
23、以下哪个单词不属于javascript保留字:(B)
A.with
B.parent
C.class
D.void
24、请选择结果为真的表达式:(C)
A.null instanceof Object
B.null === undefined
C.null == undefined
D.NaN == NaN
25、分析代码,得出正确的结果。
var a=10, b=20 , c=30;
++a;
a++;
e=++a+(++b)+(c++)+a++;
alert(e);
弹出提示对话框:77
26、写出函数 DateDemo的返回结果,系统时间假定为今天
function DateDemo(){
var d, s="今天日期是:";
d = new Date();
s += d.getMonth() + "/";
s += d.getDate() + "/";
s += d.getYear();
return s;}
结果:今天日期是:7/17/2010
27、写出程序运行的结果?
for(i=0, j=0; i<10, j<6; i++, j++){
k = i + j;}
结果:10
28、阅读以下代码,请分析出结果:
var arr = new Array(1 ,3 ,5);
arr[4]='z';
arr2 = arr.reverse();
arr3 = arr.concat(arr2);
alert(arr3);
弹出提示对话框:z,,5,3,1,z,,5,3,1
29、补充按钮事件的函数,确认用户是否退出当前页面,确认之后关闭窗口;
<html>
<head>
<script type=”text/javascript” >
function closeWin(){
//在此处添加代码if(confirm(“确定要退出吗?”)){
window.close();
}
}
</script>
</head>
<body>
<input type=”button”value=”关闭窗口”οnclick=”closeWin()”/>
</body>
</html>
26、完成foo()函数的内容,要求能够弹出对话框提示当前选中的是第几个单选框。
<html>
<head>
<metahttp-equiv=”Content-Type” content=”text/html;charset=utf-8″ />
</head>
<body>
<script type=”text/javascript” >
function foo() {
//在此处添加代码
var rdo =document.form1.radioGroup;
for(var i =0 ;i<rdo.length;i++){
if(rdo.checked){
alert(“您选择的是第”+(i+1)+”个单选框”);
}
}
}
</script>
<body>
<form name="form1″ >
<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>
26、完成函数 showImg(),要求能够动态根据下拉列表的选项变化,更新图片的
显示
<body>
<script type=”text/javascript” >
function showImg (oSel) {
//在此处添加代码
var str = oSel.value;
document.getElementById(“pic”).src= str+”.jpg”;
}
</script>
<img id=”pic”src=”img1.jpg”width=”200″ height=”200″ />
<br />
<select
id=”sel”>
<option
value=”img1“>城市生活</option>
<option
value=”img2“>都市早报</option>
<option
value=”img3“>青山绿水</option>
</select></body>
26、列举浏览器对象模型 BOM 里常用的至少 4 个对象,并列举 window 对象的常
用方法至少 5 个
对象:Window document location screen history navigator方法:Alert()
confirm()
prompt()
open()
close()
28、简述列举文档对象模型 DOM 里 document 的常用的查找访问节点的方法并做
简单说明
Document.getElementById 根据元素 id 查找元素
Document.getElementByName 根据元素 name 查找元素
Document.getElementTagName 根据指定的元素名查找元素
29、希望获取到页面中所有的 checkbox 怎么做?(不使用第三方框架)
var domList = document.getElementsByTagName(‘input’)
var checkBoxList = [];
var len = domList.length; //缓存到局部变量
while (len--) { //使用 while 的效率会比 for 循环更高
if (domList[len].type == ‘checkbox’) {
checkBoxList.push(domList[len]);
}
}
30、iframe 的优缺点?
优点:
-
解决加载缓慢的第三方内容如图标和广告等的加载问题
-
Security sandbox
-
并行加载脚本
缺点:
-
iframe 会阻塞主页面的 Onload 事件
-
即时内容为空,加载也需要时间
-
没有语意
31、DOM 操作——怎样添加、移除、移动、复制、创建和查找节点。
1. 创建新节点
createDocumentFragment() // 创建一个 DOM 片段 createElement() // 创建一个具体的元素
createTextNode() // 创建一个文本节点
2. 添加、移除、替换、插入
appendChild()
removeChild()
replaceChild()
insertBefore() // 在已有的子节点前插入一个新的子节点
3. 查找
getElementsByTagName() // 通过标签名称 getElementsByName() // 通过元素的 Name 属性的值(IE 容错能力较强,会得到一个数组, 其中包括 id 等于 name 值的) getElementById() // 通过元素 Id,唯一性
32、documen.write 和 innerHTML 的区别?
document.write 只能重绘整个页面
innerHTML 可以重绘页面的一部分