你的浏览器不支持canvas

原生一点面试题

   我的面试题:

 

 

1javascript的数据类型有哪些:

 

答:字符串型,布尔型,numbernullunderfind,数组,对象,fnsymbol;

 

2: 简述一下javascript中的运算符有哪三类,分别包括什么?

 

答:(1)算术运算符
  JavaScript中的算术运算符有单目运算符和双目运算符。
         双目运算符:
         +(加) -(减)、 *(乘)、 /(除)、 %(取余) |(按位或)、&(按位与)<<(左      移)、 >>(右移)、

>       >>(右移,零填充)。
         单目运算符:
         -(取反)、~(取补)、++(递加1)、--(递减1)。

 

(2)比较运算符
  比较运算符它的基本操作过程是,首先对它的操作数进行比较,尔后再返回一个true     False值,有8个比较运算符
         <(小于)>(大于)<=(小于等于)>=(大于等于)==(等于)!=(不等于)

 

 

3)布尔逻辑运算符
  在JavaScript中增加了几个布尔逻辑运算符:
         !(取反)&=(与之后赋值)、 &(逻辑与)、 |=(或之后赋值)、 |(逻辑或)、 ^=     (异或之后赋值)、 ^(逻辑

异或)、 ?:(三目操作符)、||(或)、==(等于)|=(不等于)
  其中三目操作符主要格式如下:
         操作数?结果1:结果2
  若操作数的结果为真,则表述式的结果为结果1,否则为结果2。

 

3:      javascript2种变量范围有什么不同?

答:全局变量:当前页面内有效

局部变量:方法内有效

 

4js中的3种弹出式消息提醒(警告窗口,确认窗口,信息输入窗口)的命令式什么?

 

答:

alert
      confirm
      prompt

 

 

5Ajax的原理是什么?

答:Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面

 

6:body中的onload()函数和jQuery中的document.ready()有什么区别?

答:onload()和document.ready()的区别有以下两点:

1、我们可以在页面中使用多个document.ready(),但只能使用一次onload()。

2、document.ready()函数在页面DOM元素加载完以后就会被调用,而onload()函数则要在所有的关联资源(包括图像、音频)加载完毕后才会调用。

7:简述一下javascript组成:

答:js组成:ECMAScript + BOM + DOM

8:程序的三大结构有哪些?

答:顺序结构,选择结构,循环结构;

9:函数的声明方式有哪些?

答:函数声明式,函数构造式, 函数构造法

10:简述一下函数变量的生存周期?

答:

全局变量,当页面关闭之后生存结束

局部变量,函数方法执行完毕之后生存周期结束

11:简述一下js的执行流程?

答:

1:读第一个代码块,做语法分析

2:如果过有语法错误,就跳出,如果有其他代码块,就读其他代码块;

3:如果没有错误,就对函数里面的var,和function做预编译处理

4:执行代码块,有错就报错;

5:如果后面还有代码就按照上述执行,如果没有就结束

 

12:简述js中有哪几种函数?

答:匿名函数,回调函数,递归函数,构造函数

13:请简述严格模式是什么?

Ecma5第二种运行模式,他的优点有一下几种:

1.消除一些javascript语法的一些不合理之处,减少一些怪异的行为

2.消除一些代码的不安全之处,提高代码的安全性

3.提高代码的运行效率,提高运行速度

4.为未来的JavaScript打下铺垫

 

14:Ecam5中新增的函数方法有哪些?

答:

Foreach( ),map( ), every( ),some( ) ,indexof( ), lastIndexof( ),filter( ),reduce()

reduceRight( ),Array.isArray( );

15 : Ecma5中新增的字符串方法哪些?

答:

Trim(),.myStr.charCodeAt(num),myStr.charAt(num),

.myStr.replace(“需替换的字符串”,“替换后的字符串”),myStr.match()

myStr.slice(start,end),myStr.substring(start,end),substr(start,length)

 

substr(start,length),.toLowerCase(),.toUpperCase() ,split(),.myStr.search()共14种

 

16:简述一下你所知道的math方法:

答:

Math.round(3.6);   // 四舍五入

Math.random();     // 返回大于等于0到小于1之间的随机数。

Math.max(a, b);    // 返回较大的数值。

Math.min(a, b);    // 返回较小的数值。

Math.abs(num);     // 返回绝对值。

Math.ceil(3.6);    // 向上取整。

Math.floor(3.6);   // 向下取整。

Math.pow(x, y);    // x的y次方。

Math.sqrt(num);    // 开平方。

Math.sin(x);       // x的正弦值,返回值在-1到1之间。

Math.cos(x);       // x的余弦值,返回值在-1到1之间。

共12种

 

17:如何创建日期对象?

答:

声明一个变量等于 new Date();

 

 

 

18:简述一下定时器和延时器的区别:

前者在指定时间后多次执行;

后者在指定时间后只执行一次;

 

19:简述一下bom的全称:

答:Browser Object Model。

 

20:请简述window有哪些属性?

      答:

self:self代表自己,相当于window。

parent:返回父窗口。

top:返回顶层窗口,和parent作用一样。

opener:窗口开启者。

status:设置窗口状态栏的文本。

 

21:请简述一下window有哪写事件?

onload:加载事件网页加载完毕后执行。

onscroll:滚动事件。

onresize:窗口缩放事件。

// 获取浏览器视窗宽度/高度

document.documentElement.clientWidth;

document.documentElement.clientHeihgt;

 

22:简述一下你知道的window的方法有哪些?

答:

Window.open

Window.close,

Window.alert,

Window.comfirm

window.prompt

22 : 简述一下history的属性哪些?

答:length

 

23:简述一下history有哪些方法?

答:

Back( ),forword( ),go( );

 

24:简述一下dom的作用和概念?

答:

DOM:Document Object Model。

document对象是DOM核心对象。

作用:对html中的内容,属性,样式进行操作。

25:在js中获取或者的输入dom节点的方法有哪些?

答:

getElementById(id)

getElementsByTagName(tagName)

getElementsByName(name)

getElementsByClassName()

 

26:在js中,如何操控dom节点中的内容,操控的方法有哪些?

答:

innerHTML

innerText

outerHTML

outerText

textContent

27:在js中如何操控dom节点的属性?

答:

 getAttribute(“属性”)。                 // 获取给定的属性的值。

   setAttribute(“属性”,“值”)。 // 设置或是添加属性。

removeAttribute(“属性”)。            // 删除属性。

 

 

 

28:在js中如何操控dom节点的样式?

答:

获取样式:Dom对象.style.属性;

设置样式:Dom对象.style.属性=“”属性值“’;

 

29:在js中,如何给dom节点增加一个属性,并赋值?

答:

Dom对象.属性=属性值;

 

30:那么,在js中,如何创建一个dom节点,并追加到父元素中?

答 :

Var newNode= document.createElement("元素标签名");

父元素.appendChild(newNode) ;

 

31:简述一下,js中如何控制表格?

答:

table.tBodies[0].rows[0].cells[0].innerHTML;

var oNewRow = table.insertRow(“行位置”);

oNewRow.insertCell(“列位置”);

 

 

 

32:简述一下,js中如何操控父节点的子节点?

答:

对象.parentNode 获得父节点的引用。

对象.childNodes 获得子节点的集合,包括空白节点。

IE7/8不包含空文本节点,但IE7包含首个注释节点(前

面没有元素节点),IE8包含所有的注释节点。

对象.children    获得子节点的集合,不包含空白节点。但IE7包含首个注释              节点(前面没有元素节点),IE8包含所有的注释节点。(仅仅是子节点)

对象.firstChild 获得第一个子节点。(IE7/8非空白节点,可能是注释节点)

对象.firstElementChild 获得第一个非空白的子节点。(IE7/8不支持)

对象.lastChild   获得最后一个子节点。(IE7最后一个元素节点,IE8最后一个非空白节点,可能是注释节点)

对象.lastElementChild   获得最后一个非空白的子节点。(IE7/8不支持)

对象.nextSibling 获得下个兄弟节点的引用。 (包括空白节点和注释。IE7/8包括注释节点,不包括空白节点。)

对象.nextElementSibling 获得下个兄弟节点的引用。 (IE7/8不支持)

对象.previousSibling 获得上个兄弟节点的引用。(包括空白节点和注释。 IE7/8包括注释节点,不包括空白节点。)

 

 

 

 

33:表单元素有哪些共同的属性和方法?

答:

一:获取表单元素的值

表单元素对象.value   // 获取或是设置值

二:属性

disabled   // 获取或设置表单控件是否禁用 true false

form       // 指向包含本元素的表单的引用。(通过表单中元素找                                                                              到相应的表单)

三:方法   表单元素是否获得焦点

blur()   // 失去焦点

focus() // 获得焦点

 

34:js中表单验证是会涉及到哪些事件?

答:

onsubmit 当表单提交的时候触发的事件。

onblur    失去焦点。

onfocus   获得焦点。

0nchange 下拉框改变值的时候。

 

 

 

 

 

35:简述一下你是所知道的事件有哪些类别,分别是什么?

答:鼠标事件,键盘事件,页面事件,表单事件

 

36:简述一下你知道的表单事件?

答:

onsubmit    提交

onblur      获得焦点

onfocus     失去焦点

onchange    改变文本区域的内容

 

37:简述一下什么是绑定事件?

答:

将一个具体的事件绑定到某个元素上,在该元素发生变动,或者触发某种变化时,执行该事件,就称作绑定事件;

 

38:如何在同一个元素上绑定多个事件?要用到哪个方法,有没有兼容问题?

答:

IE:(多个函数执行顺序:IE9/10按照绑定的顺序执行,IE7/8顺序相反。)

对象.attachEvent("事件(on)","处理程序") 添加

对象.detachEvent("事件(on)","处理程序") 删除

 

火狐:(多个函数执行顺序:按照绑定的顺序执行。)

对象.addEventListener("事件"(不加on),"处理程序",、

布尔值)添加

对象.removeEventListener("事件"(不加on),"处理程序",布尔值) 删除

 

39:什么是事件对象?他有哪些特征?

答:

用来记录一些事件发生时的相关信息的对象。

特征:

1.只有当事件发生的时候才产生,只能在处理函数内部访问。

2.处理函数运行结束后自动销毁。

 

40:简述一下什么是事件流?

答:

当页面元素触发事件的时候,该元素的容器以及整个页面都会按照特定顺序响应该元素的触发事件,事件传播的顺序叫做事件流程。

 

 

41:什么是伪数组?伪数组需要满足哪些条件?

答:

1.具有length属性

2.按索引值存储数据

3.不具有数组的pop,push等方法;

42:如何将你创建的dom节点插入到指定的位置?

答:

    1.父对象.appendChild(newNode) // 插入到父对象最后。(如果子元素没有父          元素,就讲body设置成父元素,但是如果要调用,前面必须加上document进             行调用)

    2.父对象.insertBefore(newNode, existsNode)   // 插入到什么对象之前。

43:如何删除某个节点?

答:

   父对象.removeChild(oldNode);

            如果确定要删除节点,最好也清空内存 对象=null;

 

44 : dom常见的可以设置或者读取的属性有哪些?

答:

1:offsetParent:获取元素的最近的具有定位属性(absolute或者relative)的父级        元素。如果都没有则返回body。

2:offsetLeft:获取元素相对具有定位属性的父级元素的左侧偏移距离。(子元素的            marginLeft + left + 父元素的paddingLeft)

3:offsetTop:获取元素相对就有定位属性的父级元素的顶部偏移距离。(子元素的            marginTop + top + 父元素的paddingTop)

4:scrollLeft/scrollTop:滚动条最顶端和窗口中可见内容的最顶端之间的距离。

6:clientWidth/clientHeight:元素视窗宽度/高度

5:offsetWidth/offsetHeight:元素实际宽度/高度。

6:scrollWidth/scrollHeight:获取对象的滚动宽度/高度。

 

45:简述一下鼠标事件中的,属性pageX,clientX,offsetX,screenX四者的区别?

答:

clientX: 当鼠标事件发生的时候,鼠标相对于浏览器X轴的位置。

pageX:   当鼠标事件发生的时候,鼠标相对于文档X轴的位置。(IE7/8无)

screenX:   当鼠标事件发生的时候,鼠标相对于屏幕X轴的位置。

offsetX : 当鼠标事件发生的时候,鼠标相对于事件源X轴的位置。

 

46:事件流有那两类

答:

1.冒泡事件

2.捕获型事件

47:简述一下你对冒泡事件和捕获型事件的理解?

答:

冒泡事件是有明确事件到不明确事件,

捕获型事件是由不明确到明确事件

 

 

 

 

48.事件流的执行顺序是怎么样的?

答:

当元素即绑定捕获型事件又绑定冒泡型事件执行顺序:先捕获后冒泡。

如果该元素是目标事件源对象,则谁绑定在前就先执行谁。

49.什么是事件委托?一般用在哪?

答:利用冒泡机制,将子元素事件委托给父辈元素执行。一般用由js创建的新的dom节点添加事件时候;

 

50.什么是异步,简述一下你对异步的理解?

答:

在接受数据时,没有必要等到数据接受完在进行其他操作,简单来说就像你你在看电影,还可以吃爆米花;

同步就是高考时候,监考老师说,你必须交完卷子,才能上厕所;

 

51:简述一下,ajax如何去取数据,有哪四步?

答:

创建对象,

Open();//打开

Send( );//发送

等待接受数据;

 

 

 

52:解释一下json和jsonp?、

答:

Json是一种数据存储的方式;

Jsonp是就接口两个可以说是完全不一样的东西

53:解释一下你对前后端分离的理解?

答:

后台只管数据输出和业务逻辑处理,前端负责交互逻辑和界面展示。简单的说:    前端静态页面中没有有后台程序代码,后台输出不带有HTML标签的数据。

 

54:简述一下promise函数?是什么,干什么的,怎么样?

答:

是一个构造函数,它实际上是对回调函数的一种封装 对异步编程的一种改进

Promise构造函数接受一个函数作为参数,该函数的两个参数分别是resolve 和reject。它们是两个函数,由JavaScript引擎提供,不用自己部署。通过      这两个函数可以可以执行某个事件成功或者失败时的回调函数

更方便,逻辑也更加清晰;

55:简述一下什么是同源策略,为什么要有同源策略?

答:所谓同源:是指协议、域名、端口都相同。

目的:保证用户信息的安全,防止恶意的网站窃取数据。

 

 

 

56:如果要解决同源策略,如何跨域取数据

答:

通过jsonp进行跨域取数据;

1:定义一个回调函数。

2:创建script标签,指定src地址,并添加到页面中。

注:src必须跟着一个参数callback来指定回调函数名称。

 

57:简述一下get和post提交数据的两种方式有什么区别?

答:

get多用于从服务器上获取数据,post多用于向服务器发送数据。

2:数据提交

GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以? 分割URL和传输数据,参数之间以&相连。POST把提交的数据则放置在是HTTP 包的包体中。

3:数据大小

GET请求传送的数据量比较小,达能大于2KB,这个受浏览器的限制。而POST    请求传送的数据量比较大,一般默认为不受限制。其实大小受服务器的限制。

4:安全性

GET安全性非常低,POST的安全性较高

 

 

 

58:简述一下http协议是什么?干什么吃的?怎么样?

答:

超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。该协议用于从WWW服务器传输超文本到本地浏览器的传输协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。

 

59:什么是cookie?

答:指某些网站为了辨别用户身份,进行session(会话)跟踪而存储在用户本地终端上的数据(通常经过加密)。以文本形式存在。

他减少了服务器请求的压力,同时优化了用户的操作

 

60:cookie的特点有哪些?

答:

时效性:可自定存储时间;

大小:一般4k左右

只能用文本文件;

读取有域名限制;

一般浏览器存储cookie的上限是在50个左右

 

61:在js中如何读取和存储cookie?

答:

添加cookie:document.cookie = “key=value”; // 一次写入一个键值对

读取cookie:document.cookie;

62:什么是跨站脚本个攻击?

答:

跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。

跨站脚本攻击的核心在于脚本的成功注入,并二次展示。通常服务器端都会对文本内容进行安全性的过滤。

 

63:什么是正则,为什么要使用他,如何使用

答:

正则表达式(regular expression)是一个描述字符规则的对象。可以用来检查一个字符串是否含有某个子字符串,将匹配的子字符串做替换或者从某个字符串中取出符合某个条件的子串等。

 

前端往往有大量的表单数据校验工作,采用正则表达式会使得数据校验的工作量大大减轻。常用效果:邮箱、手机号、身份证号等。

 

第一种方式:

var reg = new RegExp(“study”, “ig”);   // 第二个参数为修饰符

i:表示忽略大小写。

g:表示全局匹配,查找所有匹配而非在找到第一个匹配后停止。

m:多行匹配。

第二种方式:

var reg = /study/ig

64:简述一下js中有哪写声明变量的方式?

答:var,let,const

65:简述你对暂时性死区的理解?

答:

暂时性死区的本质就是,只要一进入当前作用域,所要使用的变量就已经存在了,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用该变量。

 

66:什么是变量的解构?

答:

ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。

67:ES6中新增的字符串方法有那哪些

答:

includes()、startsWith()、endsWith(),repeat()

 

68:什么是模板字符串,它是用来干什么的?

答:

模板字符串(template string)是增强版的字符串,用反引号(`)标识。它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。模板字符串中嵌入变量,需要将变量名写在${}之中。

69:es6对数字进行处理,增加哪些方法?

答:

Number.isNaN()   用来检查一个值是否为NaN

Number.parseInt()、取整

Number.parseFloat():取小数

 

70:es6新增的math函数有哪些,试举例说明?

答:

Math.trunc():用于去除一个数的小数部分,返回整数部分。

Math.sign():用来判断一个数到底是正数、负数、还是零。

Math.cbrt():用于计算一个数的立方根。

Math.hypot():返回所有参数的平方和的平方根。

71:es6中对数组扩展哪些行的用法?

答:

Array.of():用于将一组值,转换为数组。

Array.from():用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象。

数组实例的copyWithin():在当前数组内部,将指定位置的成员复制到其他位置(会覆盖原有成员),然后返回当前数组。也就是说,使用这个方法,会修改当前数组。

 

数组实例的find()和findIndex():

数组实例的find方法,用于找出第一个符合条件的数组成员。它的参数是一个回 调函数,所有数组成员依次执行该回调函数,直到找出第一个返回值为true的成      员,然后返回该成员。如果没有符合条件的成员,则返回undefined。

 

72:es6中使用箭头函数需要注意哪些?

答:

1:函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。

2:不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。

3:不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用Rest参数代替。

4:不可以使用yield命令,因此箭头函数不能用作Generator函数。

上面四点中,第一点尤其值得注意。this对象的指向是可变的,但是在箭头函数中,它是固定的。

73:简述一下什么是闭包?

答:

闭包就是能够读取其他函数内部变量的函数。在JS中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解为”定义在一个函数内部的函数”。

 

 

 

74:闭包有哪些特点?

答:

1:可以读取函数内部的变量。

2:让这些变量的值始终保存在内存中。

75:闭包的原理是什么?

答:

理解闭包,首先必须理解JS变量的作用域。变量的作用域无非就是两种:全局变量和局部变量。

JS语言的特殊之处,就在于函数内部可以直接读取全局变量。另一方面,函数外部自然无法读取函数内的局部变量。

 

 76:简述一下你对prototype的概念的理解,可以分为那哪几个概念的理解?

答:

1:一切引用类型都是对象。

2:对象是属性的集合。

3:对象都是通过函数创建的。

4:每个函数都有一个prototype属性,即原型。对象都有__proto__属性,可以成为隐式原型。这个__proto__属性是一个隐藏的属性,JS并不希望开发者能够用到这个属性,有的低版本浏览器甚至不支持这个属性值。

5:每个对象的__proto__属性指向创建该对象的函数的prototype。

6:Object.prototype.__proto__指向null。

 

 

77:js中设计模式有多少种?简单的据几个例子?

答:23种

单例模式,代理模式,适配器模式,观察者模式,简单工厂,抽象工厂

78:简述一下Sass是用来干嘛的?

答:

CSS 不是编程语言,虽然可以用它来开发网页样式,但是没有办法用它编程。SASS 的出现,让 CSS 实现了通过代码编程的方式来实现。

SASS 是一种 CSS 预处理器,提供了许多便利的写法,让 CSS 的处理实现了可编程处理。

SASS 扩展了 CSS3,增加了规则、变量、混入、选择器、继承等特性, 可以生成风格良好的 CSS 样式表文件,易于组织和维护。

79:简述一下gulp是用来干嘛的?

答:

1:自动压缩JS文件。

2:自动压缩CSS文件

3:自动合并文件。

4:自动编译sass。

5:自动压缩图片。

6:自动刷新浏览器。

等等。

 

 

80:简述一jQuery是什么?怎么样?

答:是类库:

怎么样:

1:体积小,使用灵巧(只需引入一个js文件)。

2:方便的选择页面元素(模仿CSS选择器更精确、灵活)。

3:动态更改页面样式/页面内容(操作DOM,动态添加、移除样式)。

4:控制响应事件(动态添加响应事件)。

5:提供基本网页特效(提供已封装的网页特效方法)。

6:快速实现通信(ajax)。

7:易扩展、插件丰富。

8:支持链式写法。

81:IE6双边距bug:

 块属性标签添加了浮动float之后,若在浮动方向上也有margin值,则margin值会加倍。其实这种问题主要就是会把某些元素挤到了第二行

解决方法:

给float元素添加display:inline 即可正常显示

82:在某些浏览器中,标签属性min-height是不兼容的

解决方法:

可以使用css表达式进行赋值

 

83:如何解决png24位在IE6下面会出现背景?

解决办法:

使用png8格式来替代

84:IE6下div高度无法小于10px

解决办法:

添加overflow属性或设置fontsize大小为高度大小 

85:ie6下的图片被拉高

解决办法:

h1{font-size:1em;}设置里面的字体大小为一个定数

86:在mozilla firefox和IE中的BOX模型解释不一致导致相差2px

解决方法:

div{margin:30px!important;margin:28px;}

87:.form在IE6里面底下会多出来一行?

解决办法:

加上:style="padding:0; margin:0

88: 文字和图片在同一行垂直居中问题:

解决办法:

一个关键的属性: margin-bottom 通过修改图片的外边框的底部高度就可以让文字移动上来. 做法是把这个值设置为负数.例如我们把下面的16X15的图片设置它的style="margin-bottom:-3px" 这样文字和图片就居中了

89:.图片透明兼容写法

解决办法:

filter:alpha(opacity=70);-moz-opacity:0.7;

 

 

90:IE行内元素上下margin及padding不拉开元素间距的问题

解决办法:

将行内元素display设置为block即可解决

91:dt中图片间隙(IE6)

如何解决:   

hack: 将<img>转为块状元素,给<img>添加声明:display:block;

92: li中图片间隙

hack1:img转为块元素;

hack2:给ul设置font-size:0;

hack3:给img设置margin-bottom:-3px;

93:表单元素行高不一致(IE,MOZ,C,O,S)

描述:表单元素行高对齐方式不一致

hack:给表单元素添加声明:float:left;

94:按钮元素默认大小不一

描述:各浏览器中按钮元素大小不一致

hack1: 统一大小/(用a标记模拟)

hack2:在input上写按钮的样式,一定要把input的边框去掉。

hack3:如果这个按钮是一个图片,直接把图片作为按钮的背景图即可。

94:li里a加display:block;出现行高不一致

hack1:给a加display:inline-block;

hack2:给a加display:inline;

 

95:在IE中,可以利用eval_r(‘元素ID属性值’)的方法取得改HTML对象,FireFox不支持此种对象

解决办法:

用“document.getElementByIdx_xx(‘元素ID属性值’)”的方法取得对象;

96:.集合类对象的()与[]的问题:以前的代码中很多集合类对象的访问使用(),IE可以正常解析,FireFox不支持

 

解决办法:改 用[]作为下标符号。 如:document.Forms(‘FormName’)改为document.Forms[‘FormName’];又 如:document.getElementsByName(‘元素Name属性值’)(1)改为 document.getElementsByName(‘元素Name属性值’)[1];

 

97:.IE或者FireFox2.0.x下,可以使用window.location或window.location.href;但在FireFox1.5下,只能使用window.location

解决办法:

解决方法:使用window.location来代替window.location.href

 

98:FireFox不支持元素的innerText属性,需用textContent

解决办法:
       if(navigator.appName.indexOf("Explorer") > -1){
           document.getElementByIdx_xx('element').innerText = "my text";
       } else{
    document.getElementByIdx_xx('element').textContent = "my text";
}

 

99:在访问某一节点如childNodes[i]时,要获得该节点的值而这个值是<![CDATA[]]类型,那么在IE中可支持这样访问 childNodes[i].text或childNodes[i].firstChild.nodeValue;在FireFox只支持 childNodes[i].firstChild.nodeValue

解决办法:统一用childNodes[i].firstChild.nodeValue方法访问节点元素值

 

100:在FireFox中,自己定义的属性必须用getAttribute()方法获取,不能像在IE下直接获取

解决办法:统一用getAttribute()方法获取

 

101:jquery中如何设置某个dom节点属性和属性值?

答:

attr(name|properties|key,value|fn):设置或返回被选元素的      属性     值。

removeAttr(name):从每一个匹配的元素中删除一个属性。

prop(name|properties|key,value|fn):获取在匹配的元素集 中的第       一个元素的属性值。

removeProp(name):用来删除由.prop()方法设置的属性集。

102:jquery中如何操控dom的class属性?

答:

addClass(class|fn):为每个匹配的元素添加指定的类名。

removeClass([class|fn]) :从所有匹配的元素中删除全部或JQtoggleClass(class|fn[,switch]):如果存在(不存在)就删除     (添加)一个类。

103:如何过去dom节点中的值?

答:

html([val|fn]):取得第一个匹配元素的html内容。这个函数不能用于XML文档。但可以用于XHTML文档。

text([val|fn]):取得所有匹配元素的内容。结果是由所有匹配元素包含的文本内容组合起来的文本。这个方法对HTMLXML文档都有效。

val([val|fn|arr]):获得匹配元素的当前值。如果多选,将返回一个数组,其包含所选的值。

104:jquery中的绑定事件有哪些?

答:

on(events,[selector],[data],fn):在选择元素上绑定一个或多个事件的事件处理函数。

off(events,[selector],[fn]):在选择元素上移除一个或多个事件的事件处理函数。

bind(type,[data],fn):为每个匹配元素的特定事件绑定事件处理函数。

unbind(type,[data|fn]])bind()的反向操作,从每一个匹配的元素中删除绑定的事件。如果没有参数,则删除所有绑定的事件。

one(type,[data],fn):为每一个匹配元素的特定事件(像click)绑定一个一次性的事件处理函数。

hover([over,]out):当鼠标移动到一个匹配的元素上面时,会触发指定的第一个函数。当鼠标移出这个元素时,会触发指定的第二个函数。

click([[data],fn]):触发每一个匹配元素的click事件。这个函数会调用执行绑定到click事件的所有函数。

 

105:在jquery中如何获取数据你?

答:

load(url, [data], [callback]):载入服务器HTML文件代码并插入至DOM中。

jQuery.ajax(url, [settings]):通过HTTP请求加载远程数据,返回其创建的XHR对象。

$.get(url, [data], [callback], [type]):通过HTTP GET请求获取数据。这是一个简单的GET请求取代复杂的$.ajax。请求成功时可调用回调函数。如果需要在出错时执行函数,则使用$.ajax

type值:_defaultHTML或者XML取决于返回值。

$.post(url, [data], [callback], [type]):通过HTTP POST请求获取数据。这是一个简单的POST请求取代复杂的$.ajax。请求成功时可调用回调函数。如果需要在出错时执行函数,则使用$.ajax

type值:_defaultHTML或者XML取决于返回值。

$.getJSON(url, [data], [callback]):通过HTTP GET请求获取JSON数据。可以通过使用JSONP形式的回调函数来加载其他网站的数据。如:”myulr?cb=?”jQuery会自动替换 ? 为正确的函数名,以执行回调函数。

$.getScript(url, [callback]):通过HTTP GET请求载入并执行一个JS文件。

$(DOM).serialize():序列表单内容为字符串,用于AJAX请求。

$(DOM).serializeArray():序列化表单元素,返回JSON数据结构数据。

 

106jquery中如何进行对象的访问?

答:

each(callback):以每一个匹配的元素作为上下文来执行一个函数。回调函数有两个参数,第一个参数代表索引,第二个参数代表当前遍历到的DOM对象。return true则跳至下一个循环(就像在普通循环中使用continue)return false则终止循环(就像在普通循环中使用break)。

size() jQuery 对象中元素的个数。

get([index]):取得其中一个匹配的元素。 num表示取得第几个匹配的元素。与$(this)[0]等价。

index([selector|element]):搜索匹配的元素,并返回相应元素的索引值,从0开始计数。如果参数是一组DOM元素或者jQuery对象,那么返回值就是传递的元素相对于原先集合的位置。如果不传递参数,那么返回值就是这个jQuery对象集合中第一个元素相对于其同辈元素的位置。

数据缓存:

data([key],[value]) :在元素上存放数据,返回jQuery对象。

removeData([name|list]):在元素上移除存放的数据。

多库共存:

jQuery.noConflict():运行这个函数将变量$的控制权让渡给第一个实现它的那个库。

 

107jquery有哪些工具函数?

答:jQuery.each(object, [callback])通用例遍方法,可用于例遍对象和数组。此方法可用于例遍任何对象。回调函数拥有两个参数:第一个为对象的成员或数组的索引,第二个为对应变量或内容。

jQuery.grep(array, callback, [invert]):使用过滤函数过滤数组元素。此函数至少传递两个参数:待过滤数组和过滤函数。过滤函数必须返回 true 以保留元素或 false 以删除元素。如果 "invert" false 或为设置,则函数返回数组中由过滤函数返回 true 的元素,当"invert" true,则返回过滤函数中返回 false 的元素集。

jQuery.map(arr|obj,callback):将一个数组中的元素转换到另一个数组中。

jQuery.inArray(value,array,[fromIndex])确定第一个参数在数组中的位置,从0开始计数(如果没有找到则返回 -1 )

jQuery.toArray():把jQuery集合中所有DOM元素恢复成一个数组。

jQuery.merge(first,second):合并两个数组。

jQuery.unique(array):删除数组中重复元素。只处理删除DOM元素数组,而不能处理字符串或者数字数组。

jQuery.parseJSON(json):接受一个JSON字符串,返回解析后的对象。传入一个畸形的JSON字符串会抛出一个异常。

jQuery.trim(str)去掉字符串起始和结尾的空格。

jQuery.contains(container,contained)一个DOM节点是否包含另一个DOM节点。

jQuery.type(obj):检测obj的数据类型。

jQuery.isArray(obj):测试对象是否为数组。

jQuery.isFunction(obj):测试对象是否为函数。

108:简述一下gitsvn的区别?

答:

git 是分布式的,svn 不是。

git 按照元数据的方式存储内容,svn 是按照文件的形式存

git svn 中的分支不同。

git 没有全局版本号,svn 有。

git 内容的完整性优于 svn

109:为什么要使用webpack

答:

webpack是一个前端工具,可以让各个模块进行加载、预处理,再进行打包。它能有gruntgulp的所有基本功能。优点如下:

1:支持commonJSAMD模块。

2:支持很多模块加载器的调用,可以使模块加载器灵活定制,比如babel-loader加载器,该加载器能使我们使用ES6的语法来编写代码。

3:可以通过配置打包成多个文件,有效地利用浏览器的缓存功能提升性能。

4:使用模块加载器,可以支持sassless等处理器进行打包且支持静态资源样式及图片进行打包。

 

110.angular.js jq的区别?

答:

前者是框架,后者是类库

111:简述一下,你所了解的mvvm框架?

答:

View:它专注于界面的显示和渲染,在angularJS中则是包含一堆声明式Directive的视图模板。

ViewModelangular中的$scope对象充当了这个ViewModel的角色。它是ViewModel的粘合体,负责ViewModel的交互协作,它负责给View提供显示的数据,以及提供了View中事件操作Model的途径。

Model:它是与应用程序的业务逻辑相关的数据的封装载体,它是业务领域的对象,Model并不关心会被如何显示或操作,所以模型也不会包含任何界面显示相关的逻辑。在web页面中,大部分Model都是来自于AJAX的服务器返回数据或者是全局的配置对象,而angular中的service则是封装和处理这些与Model相关的业务逻辑的场所。这类的业务服务是可以被多个Controller或者其他service复用的领域服务。

Controller:这并不是MVVM模式的核心元素,但它负责ViewModel对象的初始化,它将组合一个或者多个service来获取业务领域Model放在ViewModel对象上,使得应用界面在启动加载时达到可用的状态。

也可以称它为MVC模式,因为ViewModelC里面。

 

112:判断一个数据是数组的方法有哪写?

答:

isArray(); instanceof,object.prototype,toString等等。。。。

posted @ 2018-09-07 02:31  云上丶无忧  阅读(441)  评论(0编辑  收藏  举报

来场流星雨,吧