JS题目
定义一个对象o
o中有两个方法,getO()和setO(str),str是字符串
默认情况下调用getO() ,输出结果是"aaa",当setO("bbb")后,再次调用getO(),得到结果“bbb”
1 var o = { 2 data: "aaa", 3 getO: function(){ 4 console.log(this.data); //如果这里不加this,会报错,说data未定义,why 5 }, 6 setO: function(str){ 7 this.data = str; //问题同上 8 } 9 } 10 o.getO(); 11 o.setO("aaa"); 12 o.getO();
请实现,鼠标点击页面中的任意标签,alert该标签的名称.(注意兼容性)
1、给document添加click事件:document.onclick=function(){};
2、兼容性 e = event || window.event; target = event.target || event.srcElement; (这里必须为event, e, evt等无效)
3、得到target的标签:target.tagName;
代码:
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <script> 5 document.onclick = function show(event) { 6 e = event|| window.event; 7 var target = event.target || event.srcElement; 8 alert(target.tagName); 9 } 10 </script> 11 </head> 12 <body> 13 <div id="div"><span>SPAN</span>DIV</div> 14 <span>SPAN</span> 15 <p>P</p> 16 <body> 17 </html>
判断字符串是否是这样组成的,第一个必须是字母,后面可以是字母、数字、下划线,总长度为5-20
var reg = /^[a-zA-Z][a-zA-Z_0-9]{4,19}$/; reg.test("a1a__a1a__a1a__a1a__");
判断一个字符串中出现次数最多的字符,统计这个次数
1、循环for/in遍历对象
2、if(!res[key]) {res[key] = 1;} else {...}
1 var str = "aabbbsfdsf"; 2 var res = {}; 3 for(var i = 0; i < str.length; i++) { 4 var tmp = str[i]; 5 if(!res[tmp]) { 6 res[tmp] = 1; 7 }else { 8 res[tmp]++; 9 } 10 } 11 12 var big = 0; 13 var note = 0; 14 for(var key in res) { 15 if(res[key] > note) { 16 note = res[key]; 17 big = key; 18 } 19 } 20 console.log(big);
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:不可以
给数组添加一个方法,去掉数组里面的重复元素
1、this; 2、prototype; 3、splice
方法一、
1 var arr = [1 ,1 ,2, 3, 3, 2, 1]; 2 Array.prototype.unique = function(){ 3 var ret = []; 4 var o = {}; 5 var len = this.length; 6 for (var i=0; i<len; i++){ 7 var v = this[i]; 8 if (!o[v]){ 9 o[v] = 1; 10 ret.push(v); 11 } 12 } 13 return ret; 14 }; 15 console.log(arr.unique());
方法二、
1 var arr = [1,2,3,2,3,4,5]; 2 console.log(arr); 3 Array.prototype.unique = function() { 4 var obj = {}; 5 for(var i = 0; i < this.length; i++) { 6 if(!obj[this[i]]){ 7 obj[this[i]] = 1; 8 }else { 9 this.splice(i,1); 10 i = i-1; 11 } 12 } 13 console.log(this); 14 return this; 15 } 16 arr.unique(); 17 alert(arr);
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。