典藏百度前端面试题

1. UI设计部分

   这是web产品化的第一步。这个部分通常在稍大型的公司里,被单独设立为一个部门或者一些人来工作。主要是要掌握Photo, AI,可以很快的将创意转化为平面设计图,并制作PNG等小图片。 同时,UI设计还要预包含用户交互设计的元素,如何和用户交互的基本原型等。

2. HTML/CSS,页面静态化

这是web产品化的2步,就是将UI设计师的设计图切成静态页面。这里的“切”不是单纯的切,而是使用css里面背景色和边框样式等方式对设计原稿 进行解读,并形成符合web标准的html代码。这里web前端还需要将图片、html页面以及css样式进行合理的文件分布安排等

3.Javascript, AS 客户端动态化

这是web产品化的3步,工程师使用DOM操作、AJAX,实现数据和服务端的通信以及本地样式的切换。同时,由于Javascript、 AS是一门动态语言,所以这部分的编码要求web前端工程师有较好的编码习惯,能写高效率的OOP代码,并对代码进行压缩上线以降低带宽消耗等。

4.Flash、Silverlight、Video    多媒体化

这部分针对不同web产品有不同的要求,通常要求是可以使用Flash和web、Server进行交互,并对Flash进行设计与开发。

5.PHP、Java等CGI, 服务端通信基本知识和编码

这部分主要是更好的使用Ajax等技术,了解服务端的工作方式将更有利于web前端工程师工作的开展。通常优秀的web前端工程师都是对服务端的一 种开发语言很了解。

6.web开发脚本开发环境用什么、调试用什么
试过aptana,现在就用editplus
调试肯定用firebug,ie下看页面DOM用IEInspector
web前端产品的开发流程
答:首先根据产品的定位、用户群,确定配色,然后纸上设计整体布局,然后png或者psd出效果图,切出需要的小图片,然后手写代码div+css构造出 页面,然后根据功能写脚本参考126邮箱首页,将所有小图片放到一个图片中,通过css的background-position实现页面,还是为了优化,减少http连接数

规避javascript多人开发函数重名问题
答:首先是通过命名规范,比如根据不同的开发人员实现的功能,在函数名加前缀,虽然函数名看起来复杂,发布的时候还是可以替换,从而优化。
还有一种办法是,每个开发人员都把自己的函数封装到类中,然后调用的时候即使函数名相同,但是因为是要类.函数名来调用,所以也减少了重复的可能性。

IE、FF下面CSS的解释区别
答: 1.png透明背景,FF下面没有问题,IE需要用滤镜通道
2.z-index在IE、FF下面的解释问题,

IE会认为第一个z-index=0
3.长字符串,word-wrap:break-all可以解决IE,但是FF需要overflow:hidden才行

1、有些标签在ff中不能用,比如button
2、滤镜
3、鼠标cursor:hand cursor:pointer
4、div的高度自适应
5、对box模型解析不一样
6、ul、ol的padding和margin

IE都能识别*,标准浏览器(如FF)不能识别*;
IE6能识别*,但不能识别 !important;
IE7能识别*,也能识别 !important;
FF不能识别*,但能识别 !important;
例如style=”*width:10px;!important width:20px;”
这样在IE6下宽度为10px,在IE7下宽度时20px

web前端技术的展望
答:javascript ajax;flash AS;Flex;Silverlight
4用脚本写去除字符串的前后空格

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’);
}
};

附上javascript正则表达式的基本知识:
g: 全局匹配
i: 忽略大小写
^ 匹配一个输入或一行的开头,/^a/匹配”an A”,而不匹配”An a”
$ 匹配一个输入或一行的结尾,/a$/匹配”An a”,而不匹配”an A”
* 匹配前面元字符0次或多次,/ba*/将匹配b,ba,baa,baaa
+ 匹配前面元字符1次或多次,/ba*/将匹配ba,baa,baaa
? 匹配前面元字符0次或1次,/ba*/将匹配b,ba
(x) 匹配x保存x在名为$1…$9的变量中
x|y 匹配x或y
{n} 精确匹配n次
{n,} 匹配n次以上
{n,m} 匹配n-m次
[xyz] 字符集(character set),匹配这个集合中的任一一个字符(或元字符)
[^xyz] 不匹配这个集合中的任何一个字符
[b] 匹配一个退格符
b 匹配一个单词的边界
B 匹配一个单词的非边界
cX 这儿,X是一个控制符,/cM/匹配Ctrl-M
d 匹配一个字数字符,/d/ = /[0-9]/
D 匹配一个非字数字符,/D/ = /[^0-9]/
n 匹配一个换行符
r 匹配一个回车符
s 匹配一个空白字符,包括n,r,f,t,v等
S 匹配一个非空白字符,等于/[^nfrtv]/
t 匹配一个制表符
v 匹配一个重直制表符
w 匹配一个可以组成单词的字符(alphanumeric,这是我的意译,含数字),包括下划线,如[w]匹配”$5.98″中的5,等于[a-zA- Z0-9]
W 匹配一个不可以组成单词的字符,如[W]匹配”$5.98″中的$,等于[^a-zA-Z0-9
举例:验证email
var myReg = /^[_a-z0-9]+@([_a-z0-9]+.)+[a-z0-9]{2,3}$/;
if(myReg.test(strEmail)) return true;

1.       如何显示/隐藏一个DOM元素?
; s5 i1 n+ g2 c更改元素的css style,设为display: none。此外还可以将visibility设为hidden,透明度设为0,或长、宽设为0。. `7 m: r9 n$ u7 k& ]
2.       一个定宽网页在浏览器(IE6,IE7,Firefox,IE5)中横向居中对齐的布局,请写出主要的HTML标签及CSS。 

 

3.       CSS中margin和padding的区别$ Q& n1 o  \) P0 |' ]
margin是外边距,属于元素之外,相邻元素的margin可以融合。4 W5 _+ M1 V  J) I. e3 E2 V, P
padding是内边距,在元素之内,相邻元素的padding不可融合。) @2 V9 W1 X7 {7 Y
4.       JavaScript中如何检测一个变量是一个String类型?请写出函数实现3 ^5 H3 {  |2 v7 E5 F5 x
function(obj) {; Z% ]6 f0 J: x5 W  t5 x
return typeof(obj) == ”string”;$ B8 P9 B' c' ?: A
}
 I) |+ t, P
6.       如何控制网页在网络传输过程中的数据量; G- i- a  q) \3 t# j$ _1 R
0 }) }# p( @- ~
 Q2 _5 [  x4 g8 k, e" r2 b
8.       Linux中,将a、b打包为back.tar,命令是(  )
  不知道,,,;n u3 p4 _6 `
9.       Flash、Ajax各自的优缺点,在使用中如何取舍?# h1 L% |/ p8 W
Flash的缺点是需要客户端安装Flash插件,比较大,且更改了默认的HTML页面行为;但可以方便地实现很多特效及动画,且具有较高权限。
Ajax的缺点是编程较为复杂,需要服务器端的支持,能实现的效果只能是DOM API提供的,权限很低,较难跨域;但可以显著加快页面的载入速度和用户体验。
此外,二者都不能被搜索引擎索引(Google已支持Flash文本的索引),不利于SEO。
重要和关键部分直接用HTML,交互部分可以使用Ajax,复杂的动画可采用Flash。

 

1, 判断字符串是否是这样组成的,第一个必须是字母,后面可以是字母、数字、下划线,总长度为5-20

var reg = /^[a-zA-Z][a-zA-Z_0-9]{4,19}$/;

reg.test("a1a__a1a__a1a__a1a__");

2,截取字符串abcdefg的efg

var str = "abcdefg";

if (/efg/.test(str)) {

  var efg = str.substr(str.indexOf("efg"), 3);

  alert(efg);

}

3,判断一个字符串中出现次数最多的字符,统计这个次数

//将字符串的字符保存在一个hash table中,key是字符,value是这个字符出现的次数

var str = "abcdefgaddda";

var obj = {};

for (var i = 0, l = str.length; i < l; i++) {

   var key = str[i];

   if (!obj[key]) {

      obj[key] = 1;

   } else {

      obj[key]++;

   }

}

 

/*遍历这个hash table,获取value最大的key和value*/

var max = -1;

var max_key = "";

var key;

for (key in obj) {

   if (max < obj[key]) {

      max = obj[key];

      max_key = key;

   }

}

 

alert("max:"+max+" max_key:"+max_key);

4,IE与FF脚本兼容性问题

(1) window.event:

表示当前的事件对象,IE有这个对象,FF没有,FF通过给事件处理函数传递事件对象

(2) 获取事件源

IE用e[“srcElement”] 获取事件源,而FF用e[“target“] 获取事件源

(3) 添加,去除事件

IE:element.attachEvent(“onclick”, function) element.detachEvent(“onclick”, function)

FF:element.addEventListener(“click”, function, true) element.removeEventListener(“click”, function, true)

(4) 获取标签的自定义属性

IE:div1.value或div1[“value”]

FF:可用div1.getAttribute(“value”)

(5) document.getElementsByName()和document.all[name]

IE;document.getElementsByName()和document.all[name]均不能获取div元素

FF:可以

(6) input.type的属性

IE:input.type只读

FF:input.type可读写

(7) innerText textContent outerHTML

IE:支持innerText, outerHTML

FF:支持textContent

(8) 是否可用id代替HTML元素

IE:可以用id来代替HTML元素

FF:不可以

这里只列出了常见的,还有不少,更多的介绍可以参看JavaScript在IE浏览器和Firefox浏览器中的差异总结

5,规避javascript多人开发函数重名问题

(1) 可以开发前规定命名规范,根据不同开发人员开发的功能在函数前加前缀

(2) 将每个开发人员的函数封装到类中,调用的时候就调用类的函数,即使函数重名只要类名不重复就ok

6,javascript面向对象中继承实现

javascript面向对象中的继承实现一般都使用到了构造函数和Prototype原型链,简单的代码如下:

function Animal(name) {

   this.name = name;

}

 

Animal.prototype.getName = function() {alert(this.name)}

function Dog() {};

Dog.prototype = new Animal("Buddy");

Dog.prototype.constructor = Dog;

var dog = new Dog();

7,FF下面实现outerHTML

FF不支持outerHTML,要实现outerHTML还需要特殊处理

思路如下:

在页面中添加一个新的元素A,克隆一份需要获取outerHTML的元素,将这个元素append到新的A中,然后获取A的innerHTML就可以了。

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 

<head> 

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 

<title>获取outerHMTL</title> 

<style> 

div{ background:#0000FF;width:100px;height:100px;}  

span{ background:#00FF00;width:100px;height:100px;}  

p{ background:#FF0000;width:100px;height:100px;}  

</style> 

</head> 

<body> 

<div id="a"><span>SPAN</span>DIV</div> 

<span>SPAN</span>

<p>P</p> 

<script type="text/javascript">

function getOuterHTML(id){

 var el = document.getElementById(id);

 var newNode = document.createElement("div");

 document.appendChild(newNode);

 var clone = el.cloneNode(true);

 newNode.appendChild(clone);

 alert(newNode.innerHTML);

 document.removeChild(newNode);

}

getOuterHTML("a");

</script>

</body> 

</html>

8,编写一个方法 求一个字符串的字节长度

假设:

一个英文字符占用一个字节,一个中文字符占用两个字节

function GetBytes(str){

    var len = str.length;

    var bytes = len;

    for(var i=0; i<len; i++){

        if (str.charCodeAt(i) > 255) bytes++;

    }

    return bytes;

}

alert(GetBytes("你好,as"));

9,编写一个方法 去掉一个数组的重复元素

var arr = [1 ,1 ,2, 3, 3, 2, 1];

Array.prototype.unique = function(){

    var ret = [];

    var o = {};

    var len = this.length;

    for (var i=0; i<len; i++){

        var v = this[i];

        if (!o[v]){

            o[v] = 1;

            ret.push(v);

        }

    }

    return ret;

};

alert(arr.unique());

10,写出3个使用this的典型应用

(1)在html元素事件属性中使用,如

<input type=”button” οnclick=”showInfo(this);” value=”点击一下”/>

(2)构造函数

function Animal(name, color) {

   this.name = name;

   this.color = color;

}

(3)

<input type="button" id="text" value="点击一下" />

<script type="text/javascript">

var btn = document.getElementById("text");

btn.onclick = function() {

alert(this.value); //此处的this是按钮元素

}

</script>

(4)CSS expression表达式中使用this关键字

<table width="100px" height="100px">

  <tr>

    <td>

    <div style="width:expression(this.parentNode.width);">div element</div>

    </td>

  </tr>

</table>

12,如何显示/隐藏一个DOM元素?

el.style.display = "";//显示  el.style.visibility= "visible ";

el.style.display = "none";//隐藏   el.style.visibility= "hidden ";

el是要操作的DOM元素

区别:visibility设置为 hidden 时,元素依然占有原来的位置

13,JavaScript中如何检测一个变量是一个String类型?请写出函数实现

String类型有两种生成方式:

(1)Var str = “hello world”;

(2)Var str2 = new String(“hello world”);

function IsString(str){

    return (typeof str == "string" || str.constructor == String);

}

var str = "";

alert(IsString(1)); //false

alert(IsString(str)); // true

alert(IsString(new String(str))); // true

14,网页中实现一个计算当年还剩多少时间的倒数计时程序,要求网页上实时动态显示“××年还剩××天××时××分××秒”

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

   <title>倒计时</title>

</head>

<body>

<input type="text" value="" id="input" size="1000"/>

<script type="text/javascript">

   function counter() {

      var date = new Date();

      var year = date.getFullYear();

      var date2 = new Date(year, 12, 31, 23, 59, 59);

      var time = (date2 - date)/1000;

      var day =Math.floor(time/(24*60*60))

      var hour = Math.floor(time%(24*60*60)/(60*60))

      var minute = Math.floor(time%(24*60*60)%(60*60)/60);

      var second = Math.floor(time%(24*60*60)%(60*60)%60);

      var str = year + "年还剩"+day+"天"+hour+"时"+minute+"分"+second+"秒";

      document.getElementById("input").value = str;

   }

   window.setInterval("counter()", 1000);

</script>

</body>

</html>

15,补充代码,鼠标单击Button1后将Button1移动到Button2的后面<div> <input type=”button” id =”button1″ value=”1″ οnclick=”???”> <input type=”button” id =”button2″ value=”2″ /”> </div>

<div>

   <input type="button" id ="button1" value="1" οnclick="moveBtn(this);">

   <input type="button" id ="button2" value="2" />

</div>

<script type="text/javascript">

function moveBtn(obj) {

   var clone = obj.cloneNode(true);

   var parent = obj.parentNode;

   parent.appendChild(clone);

   parent.removeChild(obj);

}

</script>

16,JavaScript有哪几种数据类型

简单:Number,Boolean,String,Null,Undefined

复合:Object,Array,Function

17,下面css标签在JavaScript中调用应如何拼写,border-left-color,-moz-viewport

borderLeftColor

mozViewport

18,JavaScript中如何对一个对象进行深度clone

function cloneObject(o) {

    if(!o || 'object' !== typeof o) {

        return o;

    }

    var c = 'function' === typeof o.pop ? [] : {};

    var p, v;

    for(p in o) {

        if(o.hasOwnProperty(p)) {

            v = o[p];

            if(v && 'object' === typeof v) {

                c[p] = Ext.ux.clone(v);

            }

            else {

                c[p] = v;

            }

        }

    }

    return c;

};

19,如何控制alert中的换行

\n alert(“p\np”);

20,请实现,鼠标点击页面中的任意标签,alert该标签的名称.(注意兼容性)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 

<head> 

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 

<title>鼠标点击页面中的任意标签,alert该标签的名称</title> 

<style> 

div{ background:#0000FF;width:100px;height:100px;}  

span{ background:#00FF00;width:100px;height:100px;}  

p{ background:#FF0000;width:100px;height:100px;}  

</style> 

<script type="text/javascript">

document.onclick = function(evt){

 var e = window.event || evt;

 var tag = e["target"] || e["srcElement"];

 alert(tag.tagName);

};

</script>

</head> 

<body> 

<div id="div"><span>SPAN</span>DIV</div> 

<span>SPAN</span>

<p>P</p> 

</body> 

</html> 

21,请编写一个JavaScript函数 parseQueryString,它的用途是把URL参数解析为一个对象,如:

var url = “http://witmax.cn/index.php?key0=0&key1=1&key2=2″;

 

function parseQueryString(url){

   var params = {};

   var arr = url.split("?");

   if (arr.length <= 1)

      return params;

   arr = arr[1].split("&");

   for(var i=0, l=arr.length; i<l; i++){

      var a = arr[i].split("=");

      params[a[0]] = a[1];

   }

   return params;

}

 

var url = "http://witmax.cn/index.php?key0=0&key1=1&key2=2";

var ps = parseQueryString(url);

alert(ps["key1"]);

22,ajax是什么? ajax的交互模型? 同步和异步的区别? 如何解决跨域问题?

Ajax是多种技术组合起来的一种浏览器和服务器交互技术,基本思想是允许一个互联网浏览器向一个远程页面/服务做异步的http调用,并且用收到的数据来更新一个当前web页面而不必刷新整个页面。该技术能够改进客户端的体验。包含的技术:

XHTML:对应W3C的XHTML规范,目前是XHTML1.0。

CSS:对应W3C的CSS规范,目前是CSS2.0

DOM:这里的DOM主要是指HTML DOM,XML DOM包括在下面的XML中

JavaScript:对应于ECMA的ECMAScript规范

XML:对应W3C的XML DOM、XSLT、XPath等等规范

XMLHttpRequest:对应WhatWG的Web Applications1.0规范(http://whatwg.org/specs/web-apps/current-work/

AJAX交互模型

 

同步:脚本会停留并等待服务器发送回复然后再继续

异步:脚本允许页面继续其进程并处理可能的回复

跨域问题简单的理解就是因为JS同源策略的限制,a.com域名下的JS无法操作b.com或c.a.com下的对象,具体场景如下:

 

PS:(1)如果是端口或者协议造成的跨域问题前端是无能为力的

(2) 在跨域问题上,域仅仅通过URL的首部来识别而不会尝试判断相同的IP地址对应的域或者两个域是否对应一个IP

前端对于跨域的解决办法:

(1) document.domain+iframe

(2) 动态创建script标签

23,什么是闭包?下面这个ul,如何点击每一列的时候alert其index?

<ul id=”test”>

<li>这是第一条</li>

<li>这是第二条</li>

<li>这是第三条</li>

</ul>

内部函数被定义它的函数的外部区域调用的时候就产生了闭包。

(function A() {

   var index = 0;

   var ul = document.getElementById("test");

   var obj = {};

   for (var i = 0, l = ul.childNodes.length; i < l; i++) {

      if (ul.childNodes[i].nodeName.toLowerCase() == "li") {

         var li = ul.childNodes[i];

         li.onclick = function() {

            index++;

            alert(index);

         }

      }

   }

})();

24,请给出异步加载js方案,不少于两种

默认情况javascript是同步加载的,也就是javascript的加载时阻塞的,后面的元素要等待javascript加载完毕后才能进行再加载,对于一些意义不是很大的javascript,如果放在页头会导致加载很慢的话,是会严重影响用户体验的。

异步加载方式:

(1) defer,只支持IE

(2) async:

(3) 创建script,插入到DOM中,加载完毕后callBack,见代码:

function loadScript(url, callback){

   var script = document.createElement("script")

   script.type = "text/javascript";

   if (script.readyState){ //IE

      script.onreadystatechange = function(){

         if (script.readyState == "loaded" ||

            script.readyState == "complete"){

            script.onreadystatechange = null;

            callback();

         }

      };

   } else { //Others: Firefox, Safari, Chrome, and Opera

      script.onload = function(){

          callback();

      };

   }

   script.src = url;

   document.body.appendChild(script);

}

25,请设计一套方案,用于确保页面中JS加载完全。

var n = document.createElement("script");

n.type = "text/javascript";

//以上省略部分代码

//ie支持script的readystatechange属性(IE support the readystatechange event for script and css nodes)

if(ua.ie){

   n.onreadystatechange = function(){

       var rs = this.readyState;

       if('loaded' === rs || 'complete'===rs){

           n.onreadystatechange = null;

           f(id,url); //回调函数

       }

};

//省略部分代码

//safari 3.x supports the load event for script nodes(DOM2)

   n.addEventListener('load',function(){

       f(id,url);

   });

//firefox and opera support onload(but not dom2 in ff) handlers for

//script nodes. opera, but no ff, support the onload event for link

//nodes.

}else{

   n.onload = function(){

       f(id,url);

   };

}

26,js中如何定义class,如何扩展prototype?

Ele.className = “***”; //***在css中定义,形式如下:.*** {…}

A.prototype.B = C;

A是某个构造函数的名字

B是这个构造函数的属性

C是想要定义的属性的值

27,如何添加html元素的事件,有几种方法.

(1) 为HTML元素的事件属性赋值

(2) 在JS中使用ele.on*** = function() {…}

(3) 使用DOM2的添加事件的方法 addEventListener或attachEvent

28,documen.write和 innerHTML的区别

document.write只能重绘整个页面

innerHTML可以重绘页面的一部分

29,多浏览器检测通过什么?

(1) navigator.userAgent

(2) 不同浏览器的特性,如addEventListener

30,js的基础对象有那些, window和document的常用的方法和属性列出来

String,Number,Boolean

Window:

方法:setInterval,setTimeout,clearInterval,clearTimeout,alert,confirm,open

属性:name,parent,screenLeft,screenTop,self,top,status

Document

方法:createElement,execCommand,getElementById,getElementsByName,getElementsByTagName,write,writeln

属性:cookie,doctype,domain,documentElement,readyState,URL,

31,前端开发的优化问题

(1) 减少http请求次数:css spirit,data uri

(2) JS,CSS源码压缩

(3) 前端模板 JS+数据,减少由于HTML标签导致的带宽浪费,前端用变量保存AJAX请求结果,每次操作本地变量,不用请求,减少请求次数

(4) 用innerHTML代替DOM操作,减少DOM操作次数,优化javascript性能

(5) 用setTimeout来避免页面失去响应

(6) 用hash-table来优化查找

(7) 当需要设置的样式很多时设置className而不是直接操作style

(8) 少用全局变量

(9) 缓存DOM节点查找的结果

(10) 避免使用CSS Expression

(11) 图片预载

(12) 避免在页面的主体布局中使用table,table要等其中的内容完全下载之后才会显示出来,显示比div+css布局慢

32,如何控制网页在网络传输过程中的数据量

启用GZIP压缩

保持良好的编程习惯,避免重复的CSS,JavaScript代码,多余的HTML标签和属性

33,Flash、Ajax各自的优缺点,在使用中如何取舍?

Ajax的优势

(1) 可搜索型

(2) 开放性

(3) 费用

(4) 易用性

(5) 易于开发

Flash的优势

(1) 多媒体处理

(2) 兼容性

(3) 矢量图形 比SVG,Canvas优势大很多

(4) 客户端资源调度,比如麦克风,摄像头

例子1:

<html>
<head>
<script Language="JavaScript">
var msg="这是一个跑马灯效果的JavaScript文档";
var interval = 100;
var spacelen = 120;
var space10=" ";
var seq=0;
function Scroll() { 
len = msg.length;
window.status = msg.substring(0, seq+1);
seq++;
if ( seq >= len ) { 
seq = spacelen; 
window.setTimeout("Scroll2();", interval );
}
else

window.setTimeout("Scroll();", interval );

function Scroll2() { 
var out="";
for (i=1; i<=spacelen/space10.length; i++) out += 
space10;
out = out + msg;
len=out.length;
window.status=out.substring(seq, len);
seq++;
if ( seq >= len ) { seq = 0; };
window.setTimeout("Scroll2();", interval );

Scroll();
</script>
<body>
</body>
</html>

例子2:

<HTML>
<HEAD>
<script Language="JavaScript">
<!--
function loadform(){
alert("这是一个自动装载例子!");
}
function unloadform(){
alert("这是一个卸载例子!");
}
//-->
</Script>
</HEAD>
<BODY OnLoad="loadform()" OnUnload="unloadform()">
<a href="test.htm">调用</a>
</BODY>
</HTML>

编程篇

编写一个方法 求一个字符串的字节长度

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);

}("hello world!");

 

如何控制alert中的换行

alert("hello\nworld");

 

解释document.getElementById("ElementID").style.fontSize="1.5em"

设置id为ElementID的元素的字体大小为1.5个相对单位

Em为相对长度单位。相对于当前对象内文本的字体尺寸。

如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸。

1em=16px

 

按照格式 xxxx年xx月xx日xx时xx分xx秒动态显示时间 要求不足10的补0

<script type="text/javascript" language="javascript">

function tick(){

        var d=new Date();

        var t=function(a){return a<10?"0"+a:a;}

        Clock.innerHTML=d.getFullYear()+"年"+t(d.getMonth()+1)+"月"+t(d.getDate())+"日"+t(d.getHours())+"时"

        +t(d.getMinutes())+"分"+t(d.getSeconds())+"秒";

        window.setTimeout("tick()",1000);

   }

window.οnlοad=tick;

</script>

 

<body>

<div id="Clock"></div>

</body>

 

编写一个方法 去掉一个数组的重复元素

Array.prototype.strip=function(){

        if(this.length<2) return [this[0]]||[];

        var arr=[];

        for(var i=0;i<this.length;i++){

            arr.push(this.splice(i--,1));//将本数组中第一个元素取出放入到数组arr中 

            for(var j=0;j<this.length;j++){

                if(this[j]==arr[arr.length-1]){

                    this.splice(j--,1);//删除本数组中与数组arr中最后一个元素相同的元素

                }

            }

        }

        return arr;

    }

 

    var arr=["abc",85,"abc",85,8,8,1,2,5,4,7,8];

alert(arr.strip());

 

说出3条以上ff和ie的脚本兼容问题

IE有children,FF没有;

IE有parentElement,FF没有;

IE有 innerText,outerText,outerHTML,FF没有;

IE有数据岛,FF没有;

FF有

HTMLElement,HTMLDivElement,XMLDocument,DocumentFragment,Node,Event,Element 等等,IE没有;

IE跟FF创建HttpRequest实例的方法不一样

 

DIV中border、margin和padding的区别和用法

边框属性(border)用来设定一个元素的边线

外边距属性(margin)是用来设置一个元素所占空间的边缘到相邻元素之间的距离

内边距属性(padding)是用来设置元素内容到元素边界的距离

 

为Array写一个indexof方法

Array.prototype.indexOf = function(e){

        for(var i=0,j; j=this[i]; i++){

            if(j==e){return i;}

        }

        return -1;

    }

    

    Array.prototype.lastIndexOf = function(e){

        for(var i=this.length-1,j; j=this[i]; i--){

            if(j==e){return i;}

        }

        return -1;

    }

    

    var arr=[1,2,3,4,5];

    alert(arr.indexOf(5));

 

克隆

浅复制(影子克隆):只复制对象的基本类型,对象类型,仍属于原来的引用

深复制(深度克隆):不紧复制对象的基本类,同时也复制原对象中的对象.就是说完全是新对象产生的

 

Object.prototype.Clone = function(){

     var objClone;

     if( this.constructor == Object )

objClone = new this.constructor();

     else

objClone = new this.constructor(this.valueOf());

     for ( var key in this ){

         if ( objClone[key] != this[key] ){

             if ( typeof(this[key]) == 'object' ){

                 objClone[key] = this[key].Clone();

             }else{

                 objClone[key] = this[key];

             }

         }

     }

     objClone.toString = this.toString;

     objClone.valueOf = this.valueOf;

     return objClone;

  }

 

兼容 IE 和 FF 的换行 CSS 推荐样式

word-wrap:break-word; overflow:hidden;

 

word-wrap是控制换行的。使用break-word时,是将强制换行。中文没有任何问题,英文语句也没问题。但是对于长串的英文,就不起作用。

 

word-break是控制是否断词的。

normal是默认情况,英文单词不被拆开。

break-all,是断开单词。在单词到边界时,下个字母自动到下一行。主要解决了长串英文的问题。

keep-all,是指Chinese, Japanese, and Korean不断词。即只用此时,不用word-wrap,中文就不会换行了。(英文语句正常。)

 

手型Cursor的兼容IE和FF写法

cursor:pointer

 

<img>元素的alt和title有什么异同?

alt作为图片的替代文字出现,title是图片的解释文字

 

图片存在

只有alt 图片的解释文字

只有title 图片的解释文字

两者都有 图片的解释文字

两者都没有 图片既没有替代文字,也没有解释文字

 

图片不存在

只有alt 图片既有替代文字,又有解释文字

只有title 图片没有替代文字,只有解释文字

两者都有 图片既有替代文字,又有解释文字

两者都没有 图片既没有替代文字,也没有解释文字

 

当然不同的浏览器处理方式也会不一样

 

border-color-left、marin-left、-moz-viewport改写成JavaScript格式

border-color-left:borderLeftColor

marin-left:marinLeft

-moz-viewport:MozViewport

 

用css、html编写一个两列布局的网页,要求右侧宽度为200px,左侧自动扩展。

CSS:

#right{

float:right;

width:200px;

}

#left{

marin-right:200px;

}

HTML:

<body>

<div id=”right”>…</div>

<div id=”left”>…</div>

</body>

 

Linux题目:批量删除当前目录下后缀名为.c的文件,如a.c、b.c

rm *.c

 

如何提高网页的运行速度

内容与形式分离,模块化开发,优化CSS

减少页面文档大小

尽量减少图片的使用或注意图片的大小,优化图片:格式、质量、图片长宽标志

减少响应的次数,用Ajax

网址后面加一个“/”

转载于:https://www.cnblogs.com/zbcry/p/9201550.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值