3月8日
1.填空题
- Javascript中, 如果已知HTML页面中的某标签对象的
id='username'
,用document.getElementById("username")
___方法获得该标签对象。 - typeof运算符返回值中有一个跟javascript数据类型不一致,它是
function
。 - 定义了一个变量,但没有为该变量赋值,如果alert该变量,javascript弹出的对话框中显示
undefined
。
2.分析代码,得出正确的结果。
var a=10,b=20,c=30;
++a;//11
a++;//12
e=++a+(++b)+(c++)+a++;//13+21+30+13
alert(e);//77
3. 写出函数DateDemo的返回结果,系统时间假定为今天。
function DateDemo(){
var d, s="今天日期是:";
d = new Date();
s += d.getMonth() +1+ "/"; //今天日期是:3/
s += d.getDate() + "/"; //今天日期是:3/8/
s += d.getFullYear(); //今天日期是:3/8/2017
return s;
}
今天日期是:3/8/2017
4. 写出程序运行的结果?
for (i = 0, j = 0; i < 10, j < 6; i++, j++) {
k = i + j;
}
console.log(k); //10
5+5=10
5. 阅读以下代码,请分析出结果。
var arr = new Array(1 ,3 ,5);
arr[4]='z'; //[1,3,5,,'z']
arr2 = arr.reverse(); //['z',,5,3,1]
arr3 = arr.concat(arr2);//['z',,5,3,1,'z',,5,3,1]
alert(arr3);
['z',,5,3,1,'z',,5,3,1]
6.补充按钮事件的函数,确认用户是否退出当前页面,确认之后关闭窗口?
<html>
<head>
<script type='text/javascript'>
function closeWin(){
//在此处添加代码
if(confirm('确定要退出吗?')){
window.close();
}
}
</script>
</head>
<body>
<input type='button' value='关闭窗口' onclick='closeWin()'/>
</body>
</html>
7.写出简单描述html标签(不带属性的开始标签和结束标签)的正则表达式,并将以下字符串中的html标签去除掉。
var str = '<div>这里是div<p>里面的段落</p></div>';
<script type='text/javascript'>
var reg = /<\/?\w+\/?>/gi;
var str = '<div>这里是div<p>里面的段落</p></div>';
alert(str.replace(reg,''));
</script>
8. 完成foo()函数的内容,要求能够弹出对话框提示当前选中的是第几个单选框。
<html>
<head>
<meta http-equiv='Content-Type' content='text/html;charset=utf-8'/>
</head>
<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>
9. 完成函数showImg(),要求能够动态根据下拉列表的选项变化,更新图片的显示。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type='text/javascript'>
function showImg(oSel) {
//在此处添加代码
var str = oSel.value;
document.getElementById('pic').src = str + '.jpg';
}
</script>
</head>
<body>
![](img1.jpg)
<br/>
<select id='sel'>
<option value='img1'>城市生活</option>
<option value='img2'>都市早报</option>
<option value='img3'>青山绿水</option>
</select>
</body>
</html>
10. 截取字符串abcdefg的efg
alert('abcdefg'.substring(4));
11. 列举浏览器对象模型BOM里常用的至少4个对象,并列举window对象的常用方法至少5个。
- 对象:window,document,location,screen,history,navigator
- 方法:alert(),confirm(),prompt(),open(),close()
12. 简述列举文档对象模型DOM里document的常用的查找访问节点的方法并做简单说明。
Document.getElementById //根据元素id查找元素
Document.getElementByName //根据元素name查找元素
Document.getElementTagName //根据指定的元素名查找元素
13. 希望获取到页面中所有的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]);
}
}
14. 简述创建函数的几种方式。
//第一种(函数声明):
function sum1(num1,num2){
return num1+num2;
}
//第二种(函数表达式):
var sum2 = function(num1,num2){
return num1+num2;
}
//第三种(函数对象方式):
var sum3 = new Function("num1","num2","return num1+num2");
15. Javascript如何实现继承?
- 构造继承法
- 原型继承法
- 实例继承法
3月9日
1. Javascript创建对象的几种方式?
1、var obj = {};(使用json创建对象)
2、var obj = new Object();(使用Object创建对象)
3、通过函数创建对象。
(1)、使用this关键字,如:
var obj = function (){
this.name ='张三';
this.age = 19;
this.action = function () {
alert('吃饭');
};
}
(2)、使用prototype关键字,如:
function obj (){}
obj.prototype.name ='张三';
obj.prototype.action=function () {
alert('吃饭');
};
4、通过Window创建对象。如:
window.name = '张三';
window.age = 19;
window.action= function() {
alert('吃饭');
};
5、使用内置对象创建对象。如:
var str = new String("实例初始化String");
var str1 = "直接赋值的String";
var func = new Function("x","alert(x)");//示例初始化func
var obj = new Object();//示例初始化一个Object
2. iframe的优缺点?
- 优点:
- 解决加载缓慢的第三方内容如图标和广告等的加载问题
- Security sandbox
- 并行加载脚本
- 缺点:
- iframe会阻塞主页面的Onload事件
- 即时内容为空,加载也需要时间
- 没有语意
3. 请你谈谈Cookie的弊端?
- Cookie数量和长度的限制。每个domain最多只能有20条cookie,每个cookie长度不能超过4KB,否则会被截掉。
- 安全性问题。如果cookie被人拦截了,那人就可以取得所有的session信息。即使加密也与事无补,因为拦截者并不需要知道cookie的意义,他只要原样转发cookie就可以达到目的了。
- 有些状态不可能保存在客户端。例如,为了防止重复提交表单,我们需要在服务器端保存一个计数器。如果我们把这个计数器保存在客户端,那么它起不到任何作用。
4. js延迟加载的方式有哪些?
- defer和async
- 动态创建DOM方式(创建script,插入到DOM中,加载完毕后callBack)
- 按需异步载入js
5.documen.write和 innerHTML 的区别?
- document.write 只能重绘整个页面
- innerHTML 可以重绘页面的一部分
6. 哪些操作会造成内存泄漏?
内存泄漏指任何对象在您不再拥有或需要它之后仍然存在。
垃圾回收器定期扫描对象,并计算引用了每个对象的其他对象的数量。如果一个对象的引用数量为 0(没有其他对象引用过该对象),或对该对象的惟一引用是循环的,那么该对象的内存即可回收。
- setTimeout 的第一个参数使用字符串而非函数的话,会引发内存泄漏。
- 闭包
- 控制台日志
- 循环(在两个对象彼此引用且彼此保留时,就会产生一个循环)
7. 判断一个字符串中出现次数最多的字符,统计这个次数。
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+'次');
8.写一个获取非行间样式的函数。
function getStyle(obj,attr,value)
{
if(!value)
{
if(obj.currentStyle)
{
return obj.currentStyle(attr);
}
else{
obj.getComputedStyle(attr,false);
}
}
else
{
obj.style[attr] = value;
}
}
9. 事件委托是什么?
让利用事件冒泡的原理,让自己的所触发的事件,让他的父元素代替执行。
10. 闭包是什么,有什么特性,对页面有什么影响?
我的理解是,闭包就是能够读取其他函数内部变量的函数。在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。
functionouter(){
varnum=1;
functioninner(){
varn=2;
alert(n+num);
}
returninner;
}
outer()();
11. 解释jsonp的原理,以及为什么不是真正的ajax。
- 动态创建script标签,回调函数
- Ajax是页面无刷新请求数据操作
12.字符串反转,如将 '12345678' 变成 '87654321'。
//思路:先将字符串转换为数组split(),利用数组的反序函数reverse()颠倒数组,再利用jion()转换为字符串
varstr='12345678';
str=str.split('').reverse().join('');
13. 将数字 12345678 转化成 RMB形式 如:12,345,678。
//思路:先将数字转为字符,str=str+'';
//利用反转函数,每三位字符加一个','最后一位不加;re()是自定义的反转函数,最后再反转回去!
function re(str) {
str += '';
return str.split("").reverse().join("");
}
function toRMB(num) {
var tmp='';
for (var i = 1; i <= re(num).length; i++) {
tmp += re(num)[i - 1];
if (i % 3 == 0 && i != re(num).length) {
tmp += ',';
}
}
return re(tmp);
}
14. 生成5个不同的随机数。
//思路:5个不同的数,每生成一次就和前面的所有数字相比较,如果有相同的,则放弃当前生成的数字!
varnum1 = [];
for (vari = 0; i < 5; i++) {
num1[i] = Math.floor(Math.random() * 10) + 1;//范围是[1,10]
for (varj = 0; j < i; j++) {
if (num1[i] == num1[j]) {
i--;
}
}
}
15. 去掉数组中重复的数字。
//思路:每遍历一次就和之前的所有做比较,不相等则放入新的数组中!
//方法一
Array.prototype.unique = function () {
varlen = this.length,
newArr = [],
flag = 1;
for (vari = 0; i < len; i++, flag = 1) {
for (varj = 0; j < i; j++) {
if (this[i] == this[j]) {
flag = 0;//找到相同的数字后,不执行添加数据
}
}
flag ? newArr.push(this[i]) : '';
}
returnnewArr;
}
//方法二
var arr=[1,2,3,3,4,4,5,5,6,1,9,3,25,4];
Array.prototype.unique2 = function()
{
var n = []; //一个新的临时数组
for(var i = 0; i < this.length; i++) //遍历当前数组
{
//如果当前数组的第i已经保存进了临时数组,那么跳过,
//否则把当前项push到临时数组里面
if (n.indexOf(this[i]) == -1) n.push(this[i]);
}
return n;
}
var newArr2=arr.unique2(arr);
alert(newArr2); //输出1,2,3,4,5,6,9,25
3月10日
1. 阶乘函数。
//原型方法
Number.prototype.N=function(){
varre=1;
for(vari=1;i<=this;i++){
re*=i;
}
returnre;
}
varnum=5;
alert(num.N());
2.window.location.search() 返回的是什么?
查询(参数)部分。除了给动态语言赋值以外,我们同样可以给静态页面,并使用javascript来获得相信应的参数值
返回值:?ver=1.0&id=timlq 也就是问号后面的!
3.window.location.hash返回的是什么?
锚点。返回值:#love 。
4.window.location.reload() 作用?
刷新当前页面。
5. javascript 中的垃圾回收机制?
在Javascript中,如果一个对象不再被引用,那么这个对象就会被GC回收。如果两个对象互相引用,而不再 被第3者所引用,那么这两个互相引用的对象也会被回收。因为函数a被b引用,b又被a外的c引用,这就是为什么 函数a执行后不会被回收的原因。
6. 以下函数输出什么?
functionf1(){
vartmp=1;
this.x=3;
console.log(tmp); //1
console.log(this.x); //3
}
varobj=newf1();
console.log(obj.x); //3
console.log(f1()); //1 3 undefined
7.以下代码输出什么?
varo1=newObject();
varo2=o1;
o2.name="CSSer";
console.log(o1.name); //CSSer
8.以下代码输出什么?
functionchangeObjectProperty(o){
o.siteUrl="http://www.csser.com/";
o=newObject();
o.siteUrl="http://www.popcg.com/";
}
varCSSer=newObject();
changeObjectProperty(CSSer);
console.log(CSSer.siteUrl); //http://www.csser.com/
在函数内部修改了引用类型值的参数,该参数值的原始引用保持不变。我们可以把参数想象成局部变量,当参数被重写时,这个变量引用的就是一个局部变量,局部变量的生存期仅限于函数执行的过程中,函数执行完毕,局部变量即被销毁以释放内存。
9. a输出多少?
vara=6;
setTimeout(function(){
vara=666;
alert(a); //666
},1000);
全局变量处在作用域末端,优先访问了局部变量,从而覆盖了全局变量 。
vara=6;
setTimeout(function(){
alert(a); //输出undefined
vara=666;
},1000);
变量声明提升,但赋值没有提升,输出undefined。
vara=6;
setTimeout(function(){
alert(a); //undefined
vara=66;
},1000);
a=666;
alert(a);//666(先弹出)
10. 以下代码输出什么?
functionsetN(obj){
obj.name='屌丝';
obj=newObject();
obj.name='腐女';
};
varper=newObject();
setN(per);
alert(per.name);//屌丝
11. 以下代码输出什么?
window.color='red';
varo={color:'blue'};
functionsayColor(){
alert(this.color);
}
sayColor(); //red
sayColor.call(this); //redthis-window对象
sayColor.call(window); //red
sayColor.call(o); //blue
12. JS精度问题。
varn=0.3,m=0.2,i=0.2,j=0.1;
alert((n-m)==(i-j));//false
alert((n-m)==0.1);//false
alert((i-j)==0.1);//true
13. 为什么不能定义1px左右的div容器?
IE6下这个问题是因为默认的行高造成的,解决的方法也有很多,例如:
overflow:hidden|zoom:0.08|line-height:1px
14. 以下代码输出什么?
functionfoo(){
foo.a=function(){alert(1)};
this.a=function(){alert(2)};
a=function(){alert(3)};
vara=function(){alert(4)};
};
foo.prototype.a=function(){alert(5)};
foo.a=function(){alert(6)};
foo.a(); //6
varobj=newfoo();
obj.a(); //2
foo.a(); //1
15. 以下代码输出什么?
vara=5;
functiontest(){
a=0;
alert(a);
alert(this.a);
vara;
alert(a)
}
test();//0,5,0
newtest();//0,undefined,0//由于类它自身没有属性a,所以是undefined
3月11日
1. 计算字符串字节数。
newfunction(s){
if(!arguments.length||!s)returnnull;
if(""==s)return0;
varl=0;
for(vari=0;i<s.length;i++){
if(s.charCodeAt(i)>255)l+=2;elsel+=1;//charCodeAt()得到的是unCode码
}//汉字的unCode码大于255bit就是两个字节
alert(l);
}("helloworld!");
2. 以下代码的输出结果是什么?
varbool=!!2;
alert(bool); //true;
双向非操作可以把字符串和数字转换为布尔值。
3. 声明对象,添加属性,输出属性。
varobj={
name:'leipeng',
showName:function(){
alert(this.name);
}
}
obj.showName();
4. 匹配输入的字符:第一个必须是字母或下划线开头,长度5-20。
varreg=/^[a-zA-Z_][a-zA-Z0-9_]{5,20}/,
name1='leipeng',
name2='0leipeng',
name3='你好leipeng',
name4='hi';
alert(reg.test(name1));
alert(reg.test(name2));
alert(reg.test(name3));
alert(reg.test(name4));
5. 如何在HTML中添加事件,有几种方法?
- 标签之中直接添加
onclick="fun()";
- JS添加
Eobj.onclick = method;
- 现代事件
- IE:
obj.attachEvent('onclick', method)
; - FF:
obj.addEventListener('click', method, false)
;
- IE:
6.BOM对象有哪些,列举window对象?
- window对象 ,是JS的最顶层对象,其他的BOM对象都是window对象的属性;
- document对象,文档对象;
- location对象,浏览器当前URL信息;
- navigator对象,浏览器本身信息;
- screen对象,客户端屏幕信息;
- history对象,浏览器访问历史信息;
7.JS中的简单继承 call方法。
//顶一个父母类,注意:类名都是首字母大写的哦!
functionParent(name,money){
this.name=name;
this.money=money;
this.info=function(){
alert('姓名:'+this.name+'钱:'+this.money);
}
}
//定义孩子类
functionChildren(name){
Parent.call(this,name);//继承姓名属性,不要钱。
this.info=function(){
alert('姓名:'+this.name);
}
}
//实例化类
varper=newParent('parent',800000000000);
varchi=newChildren('child');
per.info();
chi.info();
8.bind(), live(), delegate()的区别?
- bind: 绑定事件,对新添加的事件不起作用,方法用于将一个处理程序附加到每个匹配元素的事件上并返回jQuery对象。
- live: 方法将一个事件处理程序附加到与当前选择器匹配的所有元素(包含现有的或将来添加的)的指定事件上并返回jQuery对象。
- delegate: 方法基于一组特定的根元素将处理程序附加到匹配选择器的所有元素(现有的或将来的)的一个或多个事件上。
9. 下列代码输出什么?
var foo = "11"+2-"1";
console.log(foo); //111
console.log(typeof foo); //Number
10. 下列代码输出什么?
var a = new Object();
a.value = 1;
b = a;
b.value = 2;
alert(a.value); //2
11. 如何优化代码?
- 代码重用
- 避免全局变量(命名空间,封闭空间,模块化mvc..)
- 拆分函数避免函数过于臃肿
- 注释
12. 下列代码输出什么?
function d(){
console.log(this);
}
d(); //输出window对象
13. 怎样实现两栏等高?
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div id="container" style="display: table;width: 100%;">
<div id="left" style="background-color: red;display: table-cell;">
内容<br/>
内容<br/>
内容<br/>
内容<br/>
内容<br/>
内容<br/>
</div>
<div style="display:table-cell;"></div>
<div id="right" style="background-color: blue;display: table-cell">
内容
</div>
</div>
</body>
</html>
14.使用js实现这样的效果:在文本域里输入文字时,当按下enter键时不换行,而是替换成“{{enter}}”,(只需要考虑在行尾按下enter键的情况)
<html>
<head>
<script>
function back(ele,event){
event = event || window.event;
if(event.keyCode==13){
event.returnValue = false;
ele.value+="{{enter}}"
return false;
}
}
</script>
</head>
<body>
<textarea rows="3" cols="40" id="te" onkeypress="back(this,event);"></textarea>
</body>
</html>
15. 以下代码中end字符串什么时候输出?
var t=true;
setTimeout(function(){
console.log(123);
t=false;
},1000);
while(t){} //死循环
console.log('end'); //永远不输出
3月12日
1.specify('hello,world')//=>'h,e,l,l,o,w,o,r,l,d'
,实现specify函数。
function specify(str){
var tempArray = Array.prototype.filter.call(str,function(value,index,array){
return value >= 'A' && value <= 'z' && value != "_";
});
return tempArray.join(",");
}
console.log(specify("hello,World")); //h,e,l,l,o,W,o,r,l,d
2.请将一个URL的search部分参数与值转换成一个json对象。
aaa
3. 简述readyonly与disabled的区别。
ReadOnly和Disabled的作用是使用户不能够更改表单域中的内容。
但是二者还是有着一些区别的:
- Readonly只针对input(text/password)和textarea有效,而disabled对于所有的表单元素有效,包括select,radio,checkbox,button等。
- 在表单元素使用了disabled后,我们将表单以POST或者GET的方式提交的话,这个元素的值不会被传递出去,而readonly会将该值传递出去
4. 请尽可能详尽的解释ajax的工作原理。
Ajax的工作原理相当于在用户和服务器之间加了—个中间层,使用户操作与服务器响应异步化。这样把以前的一些服务器负担的工作转嫁到客户端,利于客户端闲置的处理能力来处理,减轻服务器和带宽的负担,从而达到节约ISP的空间及带宽租用成本的目的。
简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面。这其中最关键的一步就是从服务器获得请求数据。要清楚这个过程和原理,我们必须对XMLHttpRequest有所了解。
5. 为什么扩展javascript内置对象不是好的做法?
因为你不知道哪一天浏览器或javascript本身就会实现这个方法,而且和你扩展的实现有不一致的表现。到时候你的javascript代码可能已经在无数个页面中执行了数年,而浏览器的实现导致所有使用扩展原型的代码都崩溃了。。。�
6. 什么是三元表达式?“三元”表示什么意思?
三元运算符:三元如名字表示的三元运算符需要三个操作数。
语法是条件 ? 结果1 : 结果2;. 这里你把条件写在问号(?)的前面后面跟着用冒号(:)分隔的结果1和结果2。满足条件时结果1否则结果2。
7.HTTP协议中,GET和POST有什么区别?分别适用什么场景?
aaa
8.HTTP状态消息200 302 304 403 404 500分别表示什么?
- 200:
9.HTTP协议中,header信息里面,怎么控制页面失效时间(last-modified,cache-control,Expires分别代表什么)
aaa
10.HTTP雷锋议目前常用的有哪几个?KEEPALIVE从哪个版本开始出现的?
aaa
11. 业界常用的优化WEB页面加载速度的方法(可以分别从页面元素展现,请求连接,css,js,服务器等方面介绍)
aaa
12.列举常用的web页面开发,调试以及优化工具。
aaa
13.解释什么是sql注入,xss漏洞。
aaa
14.请列举js数组类型中的常用方法。
- aaa
15.FF与IE中如何阻止事件冒泡,如何获取事件对象,以及如何获取触发事件的元素。
functionstopPropagation(e){
e=e||window.event;
if(e.stopPropagation){//W3C阻止冒泡方法
e.stopPropagation();
}else{
e.cancelBubble=true;//IE阻止冒泡方法
}
}
document.getElementById('need_hide').onclick=function(e){
stopPropagation(e);
}
3月13日
1.列举常用的js框架以及分别适用的领域。
- jquery
2.js中如何实现一个map?
aaa
3.js可否实现面向对象编程,如果可以如何实现js对象的继承?
aaa
4.约瑟夫环—已知n个人(以编号1,2,3…分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。
aaa
5.有1到10w这个10w个数,去除2个并打乱次序,如何找出那两个数?
aaa
6.如何获取对象a拥有的所有属性(可枚举的、不可枚举的,不包括继承来的属性)
aaa
7.有下面这样一段HTML结构,使用css实现效果。
实现效果:左边容器无论宽度如何变动,右边容器都能自适应填满父容器剩余的宽度。
<div class=”warp”>
<div class=”left”></div>
<div class=”right”></div>
</div>
aaa
8. 下面这段代码想要循环输出结果01234,请问输出结果是否正确,如果不正确,请说明为什么,并修改循环内的代码使其输出正确结果。
for(var i=0;i<5;++i){
setTimeout(function(){
console.log(i+’’);
},100*i);
}
9. 以下哪些是javascript的全局函数:(ABC)
A. escape 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。ECMAScript v3 反对使用该方法,应用使用 decodeURI() 和 decodeURIComponent() 替代它。
B. parseFloat parseFloat() 函数可解析一个字符串,并返回一个浮点数。
该函数指定字符串中的首个字符是否是数字。如果是,则对字符串进行解析,直到到达数字的末端为止,然后以数字返回该数字,而不是作为字符串。
C. eval 函数可计算某个字符串,并执行其中的的 JavaScript 代码。
D. setTimeout
E. alert
10. 关于IE的window对象表述正确的有:(ACD)
A. window.opener属性本身就是指向window对象
B. window.reload()方法可以用来刷新当前页面 应该是location.reload或者window.location.reload
C. window.location=”a.html”和window.location.href=”a.html”的作用都是把当前页面替换成a.html页面
D. 定义了全局变量g;可以用window.g的方式来存取该变量
11. 下面正确的是:(A)
A: 跨域问题能通过JsonP方案解决
B:不同子域名间仅能通过修改window.name解决跨域,还可以通过script标签src jsonp等h5 Java split等
C:只有在IE中可通过iframe嵌套跨域
D:MediaQuery属性是进行视频格式检测的属性是做响应式的
12. 错误的是:(C)
A: Ajax本质是XMLHttpRequest
B: 块元素实际占用的宽度与它的width、border、padding属性有关,与background无关
C: position属性absolute、fixed、---relative---会使文档脱标
D: float属性left也会使div脱标
13. 不用任何插件,如何实现一个tab栏切换?
aaa
14. 变量的命名规范以及命名推荐。
变量,函数,方法:小写开头,以后的每个单词首字母大写 (驼峰)
构造函数,class:每个单词大写开头
基于实际情况,以动词,名词,谓词来命名。尽量言简意骇,以命名代替注释
15. 三种弹窗的单词以及三种弹窗的功能?
1.alert
//弹出对话框并输出一段提示信息
function ale() {
//弹出一个对话框
alert("提示信息!");
}
2.confirm
//弹出一个询问框,有确定和取消按钮
function firm() {
//利用对话框返回的值 (true 或者 false)
if (confirm("你确定提交吗?")) {
alert("点击了确定");
}
else {
alert("点击了取消");
}
}
3.prompt
//弹出一个输入框,输入一段文字,可以提交
function prom() {
var name = prompt("请输入您的名字", ""); //将输入的内容赋给变量 name ,
//这里需要注意的是,prompt有两个参数,前面是提示的话,后面是当对话框出来后,在对话框里的默认值
if (name)//如果返回的有内容
{
alert("欢迎您:" + name)
}
}
3月14日
1.只允许使用+ - \* / 和 Math.*
,求一个函数y = f(x, a, b);
当x > 100
时返回 a 的值,否则返回 b 的值,不能使用if else
等条件语句,也不能使用|,?:,
数组。
function f(x, a, b) {
var temp = Math.ceil(Math.min(Math.max(x - 100, 0), 1));
return a * temp + b * (1 - temp);
}
console.log(f(-10, 1, 2));
2.JavaScriptalert(0.4*0.2);结果是多少?和你预期的一样吗?如果不一样该如何处理?
有误差,应该比准确结果偏大。 一般我会将小数变为整数来处理。当前之前遇到这个问题时也上网查询发现有人用try catch return写了一个函数,当然原理也是一致先转为整数再计算。
3.一个div,有几种方式得到这个div的jQuery对象?<div class='aabbcc' id='nodesView'></div>
想直接获取这个div的dom对象,如何获取?dom对象如何转化为jQuery对象?
$('#nodesView') , $('.aabbcc') ,$('#nodesView')[0] , $('.aabbcc')[0]
4.如何显示/隐藏一个dom元素?请用原生的JavaScript方法实现。
aaa
5.jQuery框架中$.ajax()的常用参数有哪些?写一个post请求并带有发送数据和返回数据的样例。
- async是否异步
- url请求地址
- contentType发送信息至服务器时内容编码类型
- data发送到服务器的数据
- dataType预期服务器返回的数据类型
- type请求类型
- success请求成功回调函数
- error请求失败回调函数
$.ajax({
url: "/jquery/test1.txt",
type: 'post',
data: {
id: 1
},
success: function (data) {
alert(data);
}
}
6.闭包:下面这个ul,如何点击每一列的时候alert其index?
<ul id="test">
<li>这是第一条</li>
<li>这是第二条</li>
<li>这是第三条</li>
</ul>
window.onload = function () {
var lis = document.getElementById('test').children;
for (var i = 0; i < lis.length; i++) {
lis[i].onclick = (function (i) {
return function () {
alert(i)
};
})(i);
}
};
7.列出3条以上ff和IE的脚本兼容问题。
window.event:
表示当前的事件对象,IE有这个对象,FF没有,FF通过给事件处理函数传递事件对象-
获取事件源
IE用srcElement获取事件源,而FF用target获取事件源。
-
添加,去除事件
IE:
element.attachEvent(“onclick”, function) element.detachEvent(“onclick”, function)
FF:element.addEventListener(“click”, function, true) element.removeEventListener(“click”, function, true)
-
获取标签的自定义属性
IE:
div1.value或div1[“value”]
FF:可用div1.getAttribute(“value”)
8.用正则表达式,写出由字母开头,其余由数字、字母、下划线组成的6~30的字符串?
^[a-zA-Z]{1}[\w]{5,29}$
9. 列举浏览器对象模型BOM里常用的至少4个对象,并列举window对象的常用方法至少5个。
- 对象:Window document location screen history navigator
- 方法:Alert() confirm() prompt() open() close()
10. 在Javascript中什么是伪数组?如何将伪数组转化为标准数组?
伪数组(类数组):无法直接调用数组方法或期望length属性有什么特殊的行为,但仍可以对真正数组遍历方法来遍历它们。典型的是函数的argument参数,还有像调用
getElementsByTagName,document.childNodes
之类的,它们都返回NodeList对象都属于伪数组。可以使用Array.prototype.slice.call(fakeArray)
将数组转化为真正的Array对象。
11. 写一个函数可以计算 sum(5,0,-5);输出0; sum(1,2,3,4);
输出10。
function sum() {
var result = 0;
var arr = arguments;
for (var i = 0; i < arr.length; i++) {
var num = arguments[i];
if (typeof num == 'number') {
result += num;
};
};
return result;
}
12.写出正确的正则表达式匹配固话号,区号3-4位,第一位为0,中横线,7-8位数字,中横线,3-4位分机号格式的固话号。
^[0]\d{2,3}\-\d{7,8}\-\d{3,4}$
13. 写出代码对下列数组去重并从大到小排列{5,2,3,6,8,6,5,4,7,1,9}
function fn(arr) {
for (var i = 0; i < arr.length - 1; i++) {
for (var j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] < arr[j + 1]) {
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
for (i = 0; i < arr.length; i++) {
var c = arr[i];
for (var s = i + 1; s < arr.length; s++) {
if (arr[s] == c) {
//debugger;
arr.splice(s, 1);
s--;
}
}
}
return arr;
}
console.log(fn([5, 2, 3, 6, 8, 6, 5, 4, 7, 1, 9]).toString());
14. 统计1到400亿之间的自然数中含有多少个1?比如1-21中,有1、10、11、21这四个自然数有5个1。
aaa
15. 删除与某个字符相邻且相同的字符,比如fdaffdaaklfjklja字符串处理之后成为“fdafdaklfjklja”。
aaa