2012-09-01 10:19:02| 分类: js |举报 |字号 订阅
1,判断字符串是否是这样组成的,第一个必须是字母,后面可以是字母、数字、下划线,总长度为5-20
var reg = /^[a-zA-Z][a-zA-Z_0-9]{4,19}$/;/*注意:1.要用^开头和$结尾,2.总长度5-20翻译为{4,19};3.别忘了还有下划线;*/
reg.test("a1a__a1a__a1a__a1a__");
2,截取字符串abcdefg的efg
var str = "abcdefg";
if (/efg/.test(str)) {/*判断是否有efg*/
varefg = str.substr(str.indexOf("efg"), 3);//indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。Substr中的3表示取3个的意思
alert(efg);
}
3,判断一个字符串中出现次数最多的字符,统计这个次数
/*将字符串的字符保存在一个hashtable中,key是字符,value是这个字符出现的次数*/
var str = "abcdefgaddda";
var obj = {};
for (var i = 0, l = str.length; i < l;i++) {
var key = str[i];//取一个字符出来,比如c
if(!obj[key]) {//在对象中存在这个【字符的个数】么?注意,是字符的个数(比如1,3,4),而不是字符(a,b,d)
obj[key] = 1;//如果不存在,就将这个字符出现的个数设置为1
}else {
obj[key]++;//如果个数已经存在了,就加1
}
}
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用srcElement获取事件源,而FF用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.getElementByName()和document.all[name]
IE;document.getElementByName()和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 = newAnimal("Buddy");
Dog.prototype.constructor = Dog;
var dog = new Dog();
//JS面向对象的内容推荐看李琰灰老师的视频教程
7,FF下面实现outerHTML//这一题看不懂什么意思
FF不支持outerHTML,要实现outerHTML还需要特殊处理
思路如下:
在页面中添加一个新的元素A,克隆一份需要获取outerHTML的元素,将这个元素append到新的A中,然后获取A的innerHTML就可以了。
div{background:#0000FF;width:100px;height:100px;}
span{background:#00FF00;width:100px;height:100px;}
p{background:#FF0000;width:100px;height:100px;}
SPAN
P
function getOuterHTML(id){
varel = document.getElementByIdx_x(id);
varnewNode = document.createElement_x("div");
document.appendChild(newNode);
varclone = el.cloneNode(true);
newNode.appendChild(clone);
alert(newNode.innerHTML);
document.removeChild(newNode);
}
getOuterHTML("a");