以下为Web前端开发笔试题集锦之Javascript篇,移步HTML/CSS篇
1, 判断字符串是否是这样组成的,第一个必须是字母,后面可以是字母、数字、下划线,总长度为5-20
var reg = /^[a-zA-Z][a-zA-Z_0-9]{4,19}$/;
("a1a__a1a__a1a__a1a__");
2,截取字符串abcdefg的efg
var str = "abcdefg";
if (/efg/(str)) {
var efg = tr(xOf("efg"), 3);
alert(efg);
}
3,判断一个字符串中出现次数最多的字符,统计这个次数
//将字符串的字符保存在一个hash table中,key是字符,value是这个字符出现的次数
var str = "abcdefgaddda";
var obj = {};
for (var i = 0, l = th; 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) t:
表示当前的事件对象,IE有这个对象,FF没有,FF通过给事件处理函数传递事件对象
(2) 获取事件源
IE用srcElement获取事件源,而FF用target获取事件源
(3) 添加,去除事件
IE:chEvent(“onclick”, function) chEvent(“onclick”, function)
FF:ventListener(“click”, function, true) veEventListener(“click”, function, true)
(4) 获取标签的自定义属性
IE:e或div1[“value”]
FF:可用ttribute(“value”)
(5) lementByName()和[name]
IE;lementByName()和[name]均不能获取div元素
FF:可以
(6) 的属性
IE:只读
FF:可读写
(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) {
= name;
}
ame = function() {alert()}
function Dog() {};
otype = new Animal("Buddy");
tructor = Dog;
var dog = new Dog();
7,FF下面实现outerHTML
FF不支持outerHTML,要实现outerHTML还需要特殊处理
思路如下:
在页面中添加一个新的元素A,克隆一份需要获取outerHTML的元素,将这个元素append到新的A中,然后获取A的innerHTML就可以了。
SPANDIV
SPAN
P
8,编写一个方法 求一个字符串的字节长度
假设:
一个英文字符占用一个字节,一个中文字符占用两个字节
function GetBytes(str){
var len = th;
var bytes = len;
for(var i=0; i
if (CodeAt(i) > 255) bytes++;
}
return bytes;
}
alert(GetBytes("你好,as"));
9,编写一个方法 去掉一个数组的重复元素
var arr = [1 ,1 ,2, 3, 3, 2, 1];
ue = function(){
var ret = [];
var o = {};
var len = th;
for (var i=0; i
var v = this[i];
if (!o[v]){
o[v] = 1;
(v);
}
}
return ret;
};
alert(ue());
10,写出3个使用this的典型应用
(1)在html元素事件属性中使用,如
(2)构造函数
function Animal(name, color) {
= name;
r = color;
}
(3)
(4)CSS expression表达式中使用this关键字
div element
12,如何显示/隐藏一个DOM元素?
lay = "";
lay = "none";
el是要操作的DOM元素
13,JavaScript中如何检测一个变量是一个String类型?请写出函数实现
String类型有两种生成方式:
(1)Var str = “hello world”;
(2)Var str2 = new String(“hello world”);
function IsString(str){
return (typeof str == "string" || tructor == String);
}
var str = "";
alert(IsString(1));
alert(IsString(str));
alert(IsString(new String(str)));
14,网页中实现一个计算当年还剩多少时间的倒数计时程序,要求网页上实时动态显示“××年还剩××天××时××分××秒”
15,补充代码,鼠标单击Button1后将Button1移动到Button2的后面
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 ? [] : {};
var p, v;
for(p in o) {
if(wnProperty(p)) {
v = o[p];
if(v && 'object' === typeof v) {
c[p] = e(v);
}
else {
c[p] = v;
}
}
}
return c;
};
19,如何控制alert中的换行
n alert(“pnp”);
20,请实现,鼠标点击页面中的任意标签,alert该标签的名称.(注意兼容性)
SPANDIV
SPAN
P
21,请编写一个JavaScript函数 parseQueryString,它的用途是把URL参数解析为一个对象,如:
var url = “″;
function parseQueryString(url){
var params = {};
var arr = t("?");
if (th <= 1)
return params;
arr = arr[1]t("&");
for(var i=0, l=th; i
var a = arr[i]t("=");
params[a[0]] = a[1];
}
return params;
}
var url = "
var ps = parseQueryString(url);
alert(ps["key1"]);