<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[蜗爱CSS]]></title>
<link>http://www.woaicss.com/</link>
<description><![CDATA[css初学者 前端技术]]></description>
<language>zh-cn</language>
<copyright><![CDATA[Copyright 2005 PBlog3 v2.8]]></copyright>
<webMaster><![CDATA[wo-ai-niqq@163.com(蜗牛)]]></webMaster>
<generator>PBlog2 v2.4</generator> 
<image>
	<title>蜗爱CSS</title>
	<url>http://www.woaicss.com/images/logos.gif</url>
	<link>http://www.woaicss.com/</link>
	<description>蜗爱CSS</description>
</image>

			<item>
			<link>http://www.woaicss.com/article/js/2012011101.htm</link>
			<title><![CDATA[javascript-获取数组最大元素索引]]></title>
			<author>wo-ai-niqq@163.com(woniu)</author>
			<category><![CDATA[Js/jQuery]]></category>
			<pubDate>Wed,11 Jan 2012 17:48:06 +0800</pubDate>
			<guid>http://www.woaicss.com/default.asp?id=297</guid>
		<description><![CDATA[javascript 获取数组元素最大值的索引值。<br/><textarea name="code" class="JScript">
(function(){
			var arr = new Array(1,7,0,4,3,10);
			Array.prototype.max = function() {   
			 var max = this[0]; 
			 var len = this.length;  
			 for (var i = 1; i < len; i++){
			   this.index = i;
			   if (this[i] > max) {       
			   max = this[i ]; 
			   num = this.index;
			  }  
			 }    
			 return num; 
			}
			 alert(arr.max());
		})()
</textarea>]]></description>
		</item>
		
			<item>
			<link>http://www.woaicss.com/article/js/20120104.htm</link>
			<title><![CDATA[js练习26—事件委托]]></title>
			<author>wo-ai-niqq@163.com(woniu)</author>
			<category><![CDATA[Js/jQuery]]></category>
			<pubDate>Thu,05 Jan 2012 00:09:22 +0800</pubDate>
			<guid>http://www.woaicss.com/default.asp?id=291</guid>
		<description><![CDATA[事件委托就是为了提高性能，在一个页面上使用一个事件来管理多种类型的事件。<br/><br/>例如需要下面三个li上分别绑定不同的事件：<br/><textarea name="code" class="Xml">
<ul id=&#34;box&#34;>
		<li id=&#34;c_border&#34;>蜗爱css -事件委托demo1-点我边框变红</li>
		<li id=&#34;c_height&#34;>蜗爱css -事件委托demo2-点我高度变高</li>
              <li id=&#34;c_back&#34;>蜗爱css -事件委托demo3-点我背景变色</li>
</ul>
</textarea><br/><a target="_blank" href="http://www.woaicss.com/works/Demo/2012.01/2012010501.html" rel="external">[demo]</a><br/>通常写法：<br/><textarea name="code" class="JScript">
(function(){
		 function $(id){return document.getElementById(id);}
		 $('c_border').onclick = function(){
			this.style.cssText = &#34;border:1px solid red&#34;;
			//this.style.border = &#34;1px solid red&#34;;
		 };
		  $('c_height').onclick = function(){
			this.style.height = 40 + 'px';
		 };
		  $('c_back').onclick = function(){
			this.style.cssText = &#34;background:#000;color:#fff;&#34;;
		 };
    })()
</textarea><br/>事件委托写法：<br/><textarea name="code" class="JScript">
(function(){
		 function $(id){return document.getElementById(id);}
		 oUl = $('box');
		 oUl.onclick = function(ev){
			var ev = ev || window.event; 
			var target = ev.target || ev.srcElement; 
			switch(target.id){
				case &#34;c_border&#34;:
				$('c_border').style.cssText = &#34;border:1px solid red&#34;;
				break;
				case &#34;c_height&#34;:
				$('c_height').style.height = 40 + 'px';
				break;
				case &#34;c_back&#34;:
				$('c_back').style.cssText = &#34;background:#000;color:#fff;&#34;;
				break;
			}
		}
	})()
</textarea><br/><span style="color:red">优点：</span><br/>事件委托对于web应用程序的性能有如下几个优点：<br/>1.需要管理的函数变少了<br/>2.占用的内存少了<br/>3.javascript代码和Dom结构之间的关联更少了<br/>相关：<br/><a target="_blank" href="http://younglab.blog.51cto.com/416652/274132" rel="external">JavaScript中的事件委托</a><br/><a target="_blank" href="http://www.cnblogs.com/ashun/archive/2006/11/27/event_javascri&#112;t_ie_firefox_gorush.html" rel="external">firefox 和 ie 事件处理的细节,研究,再研究-----书写同时兼容ie和ff的事件处理代码</a>]]></description>
		</item>
		
			<item>
			<link>http://www.woaicss.com/article/js/20120102mark.htm</link>
			<title><![CDATA[高效javascript—Mark地址]]></title>
			<author>wo-ai-niqq@163.com(woniu)</author>
			<category><![CDATA[Js/jQuery]]></category>
			<pubDate>Mon,02 Jan 2012 23:50:29 +0800</pubDate>
			<guid>http://www.woaicss.com/default.asp?id=290</guid>
		<description><![CDATA[Mark 个地址&nbsp;&nbsp;<a target="_blank" href="http://www.cnblogs.com/justinw/archive/2010/03/17/1688113.html" rel="external">[高效javascript]</a>]]></description>
		</item>
		
			<item>
			<link>http://www.woaicss.com/article/js/20110101.html.htm</link>
			<title><![CDATA[js练习25—通过class选择页面元素]]></title>
			<author>wo-ai-niqq@163.com(woniu)</author>
			<category><![CDATA[Js/jQuery]]></category>
			<pubDate>Sun,01 Jan 2012 11:12:09 +0800</pubDate>
			<guid>http://www.woaicss.com/default.asp?id=289</guid>
		<description><![CDATA[&nbsp;&nbsp;通过class选择页面元素，可以是多个class。函数：<br/><br/><textarea name="code" class="JScript">
function getByClass(oParent,sClass) { 
		var aTmp = [],// var aTmp = new Array();
			aEle = oParent.getElementsByTagName('*');
			var pattern = new RegExp(&#34;\\b&#34;+sClass+&#34;\\b&#34;); //正则，'\b'：匹配单词边界
		    for (var i=0; i<aEle.length; i++ ) {
		   if (pattern.test(aEle[i].className)){
				aTmp.push(aEle[i]);
			}
		   }
		   return aTmp;
	}
</textarea><br/><a target="_blank" href="http://www.woaicss.com/works/Demo/2012.01/getByclass.html" rel="external">[demo]</a>]]></description>
		</item>
		
			<item>
			<link>http://www.woaicss.com/article/js/20111224.html.htm</link>
			<title><![CDATA[js练习24—弹出隐藏层]]></title>
			<author>wo-ai-niqq@163.com(woniu)</author>
			<category><![CDATA[Js/jQuery]]></category>
			<pubDate>Sat,24 Dec 2011 16:29:57 +0800</pubDate>
			<guid>http://www.woaicss.com/default.asp?id=288</guid>
		<description><![CDATA[面向对象 小demo<br/><br/><a target="_blank" href="http://www.woaicss.com/works/Demo/2011.12/20111224.html" rel="external">[demo]</a>]]></description>
		</item>
		
			<item>
			<link>http://www.woaicss.com/article/js/2011112901.htm</link>
			<title><![CDATA[js练习23—仿flash图片轮换(二)]]></title>
			<author>wo-ai-niqq@163.com(woniu)</author>
			<category><![CDATA[Js/jQuery]]></category>
			<pubDate>Tue,29 Nov 2011 23:33:17 +0800</pubDate>
			<guid>http://www.woaicss.com/default.asp?id=285</guid>
		<description><![CDATA[<br/><a target="_blank" href="http://www.woaicss.com/works/demo/2011.11/2011112901.html" rel="external">[demo]</a>]]></description>
		</item>
		
			<item>
			<link>http://www.woaicss.com/article/js/2011112601.htm</link>
			<title><![CDATA[js练习22—仿flash图片轮换(一)]]></title>
			<author>wo-ai-niqq@163.com(woniu)</author>
			<category><![CDATA[Js/jQuery]]></category>
			<pubDate>Sat,26 Nov 2011 23:57:06 +0800</pubDate>
			<guid>http://www.woaicss.com/default.asp?id=284</guid>
		<description><![CDATA[直接上demo<br/><br/><a target="_blank" href="http://www.woaicss.com/works/demo/2011.11/2011112601.html" rel="external">[demo]</a>]]></description>
		</item>
		
			<item>
			<link>http://www.woaicss.com/article/js/woniu.htm</link>
			<title><![CDATA[常见javascript笔试题]]></title>
			<author>wo-ai-niqq@163.com(woniu)</author>
			<category><![CDATA[Js/jQuery]]></category>
			<pubDate>Sun,20 Nov 2011 22:59:24 +0800</pubDate>
			<guid>http://www.woaicss.com/default.asp?id=282</guid>
		<description><![CDATA[<strong>1. 判断字符串是否是这样组成的，第一个必须是字母，后面可以是字母、数字、下划线，总长度为5-20</strong><br/><div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.woaicss.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> Example Source Code </div><div class="UBBContent"><br/>var reg = /^[a-zA-Z][a-zA-Z_0-9]{4,19}$/;<br/>reg.test(&#34;a1a__a1a__a1a__a1a__&#34;);<br/></div></div><br/><br/><strong>2.截取字符串abcdefg的efg</strong><br/><div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.woaicss.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> Example Source Code </div><div class="UBBContent"><br/>var str = &#34;abcdefg&#34;;<br/>if (/efg/.test(str)) {<br/>&nbsp;&nbsp;&nbsp;&nbsp; var efg = str.substr(str.indexOf(&#34;efg&#34;), 3);<br/>&nbsp;&nbsp;&nbsp;&nbsp; alert(efg);<br/>}<br/></div></div><br/><br/><strong>3. 判断一个字符串中出现次数最多的字符，统计这个次数</strong><br/><div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.woaicss.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> Example Source Code </div><div class="UBBContent"><br/>//将字符串的字符保存在一个hash table中，key是字符，value是这个字符出现的次数<br/>var str = &#34;abcdefgaddda&#34;;<br/>var obj = {};<br/>for (var i = 0, l = str.length; i &lt; l; i++) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var key = str[i];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!obj[key]) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; obj[key] = 1;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; obj[key]++;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>}<br/><br/>/*遍历这个hash table，获取value最大的key和value*/<br/><br/>var max = -1;<br/>var max_key = &#34;&#34;;<br/>var key;<br/>for (key in obj) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (max &lt; obj[key]) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; max = obj[key];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; max_key = key;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/><br/>}<br/>alert(&#34;max:&#34;+max+&#34; max_key:&#34;+max_key);<br/></div></div><br/><br/><strong>4. IE与FF脚本兼容性问题</strong><br/><br/>(1) window.event：<br/>表示当前的事件对象，IE有这个对象，FF没有，FF通过给事件处理函数传递事件对象<br/><br/>(2) 获取事件源<br/>IE用srcElement获取事件源，而FF用target获取事件源<br/><br/>(3) 添加，去除事件<br/>IE：element.attachEvent(“onclick”, function) element.detachEvent(“onclick”, function)<br/>FF：element.addEventListener(“click”, function, true) element.removeEventListener(“click”, function, true)<br/><br/>(4) 获取标签的自定义属性<br/>IE：div1.value或div1[“value”]<br/>FF：可用div1.getAttribute(“value”)<br/><br/>(5) document.getElementByName()和document.all[name]<br/>IE；document.getElementByName()和document.all[name]均不能获取div元素<br/>FF：可以<br/><br/>(6) input.type的属性<br/>IE：input.type只读<br/>FF：input.type可读写<br/><br/>(7) innerText textContent outerHTML<br/>IE：支持innerText, outerHTML<br/>FF：支持textContent<br/><br/>(8) 是否可用id代替HTML元素<br/>IE：可以用id来代替HTML元素<br/>FF：不可以<br/><br/><strong>5. 规避javascript多人开发函数重名问题</strong><br/>(1) 可以开发前规定命名规范，根据不同开发人员开发的功能在函数前加前缀<br/>(2) 将每个开发人员的函数封装到类中，调用的时候就调用类的函数，即使函数重名只要类名不重复就ok<br/><br/><strong>6. javascript面向对象中继承实现</strong><br/>javascript面向对象中的继承实现一般都使用到了构造函数和Prototype原型链，简单的代码如下：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.woaicss.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> Example Source Code </div><div class="UBBContent"><br/>function Animal(name) {<br/>&nbsp;&nbsp; this.name = name;<br/>}<br/>Animal.prototype.getName = function() {alert(this.name)}<br/>function Dog() {};<br/>Dog.prototype = new Animal(&#34;Buddy&#34;);<br/>Dog.prototype.constructor = Dog;<br/>var dog = new Dog();<br/></div></div><br/><br/><strong>7. FF下面实现outerHTML</strong><br/>FF不支持outerHTML，要实现outerHTML还需要特殊处理<br/>思路如下：<br/><br/>在页面中添加一个新的元素A，克隆一份需要获取outerHTML的元素，将这个元素append到新的A中，然后获取A的innerHTML就可以了。<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.woaicss.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> Example Source Code </div><div class="UBBContent"><br/>&lt;!DOCTYPE html PUBLIC &#34;-//W3C//DTD XHTML 1.0 Transitional//EN&#34; &#34;<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" target="_blank" rel="external">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</a>&#34;&gt;<br/>&lt;html xmlns=&#34;<a href="http://www.w3.org/1999/xhtml" target="_blank" rel="external">http://www.w3.org/1999/xhtml</a>&#34;&gt;<br/>&lt;head&gt;<br/>&lt;meta http-equiv=&#34;Content-Type&#34; content=&#34;text/html; charset=gb2312&#34; /&gt;<br/>&lt;title&gt;获取outerHMTL&lt;/title&gt;<br/>&lt;style&gt;<br/>div{ background:#0000FF;width:100px;height:100px;}<br/>span{ background:#00FF00;width:100px;height:100px;}<br/>p{ background:#FF0000;width:100px;height:100px;}<br/>&lt;/style&gt;<br/>&lt;/head&gt;<br/>&lt;body&gt;<br/>&lt;div id=&#34;a&#34;&gt;&lt;span&gt;SPAN&lt;/span&gt;DIV&lt;/div&gt;<br/>&lt;span&gt;SPAN&lt;/span&gt;<br/>&lt;p&gt;P&lt;/p&gt;<br/>&lt;script type=&#34;text/javascript&#34;&gt;<br/>function getOuterHTML(id){<br/>var el = document.getElementById(id);<br/>var newNode = document.cr&#101;ateElement(&#34;div&#34;);<br/>document.appendChild(newNode);<br/>var clone = el.cloneNode(true);<br/>newNode.appendChild(clone);<br/>alert(newNode.innerHTML);<br/>document.removeChild(newNode);<br/>}<br/>getOuterHTML(&#34;a&#34;);<br/>&lt;/script&gt;<br/>&lt;/body&gt;<br/>&lt;/html&gt;<br/></div></div><br/><br/><strong>8. 编写一个方法 求一个字符串的字节长度</strong><br/>假设：一个英文字符占用一个字节，一个中文字符占用两个字节<br/><br/><div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.woaicss.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> Example Source Code </div><div class="UBBContent"><br/>function GetBytes(str){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var len = str.length;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var bytes = len;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(var i=0; i&lt;len; i++){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (str.charCodeAt(i) &gt; 255) bytes++;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return bytes;<br/>}<br/>alert(GetBytes(&#34;你好,as&#34;));<br/></div></div><br/><strong><br/>9. 编写一个方法 去掉一个数组的重复元素</strong><br/><br/><div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.woaicss.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> Example Source Code </div><div class="UBBContent"><br/>var arr = [1 ,1 ,2, 3, 3, 2, 1];<br/>Array.prototype.unique = function(){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var ret = [];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var o = {};<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var len = this.length;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (var i=0; i&lt;len; i++){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var v = this[i];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!o[v]){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o[v] = 1;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret.push(v);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return ret;<br/>};<br/>alert(arr.unique());<br/></div></div><br/><br/><strong>10. 写出3个使用this的典型应用</strong><br/>（1）在html元素事件属性中使用，如:<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.woaicss.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> Example Source Code </div><div class="UBBContent"><br/>&lt;input type=”button” onclick=”showInfo(this);” value=”点击一下”/&gt;<br/></div></div><br/><br/>（2）构造函数<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.woaicss.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> Example Source Code </div><div class="UBBContent"><br/>function Animal(name, color) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.name = name;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.color = color;<br/>}<br/></div></div><br/>（3）<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.woaicss.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> Example Source Code </div><div class="UBBContent"><br/>&lt;input type=&#34;button&#34; id=&#34;text&#34; value=&#34;点击一下&#34; /&gt;<br/>&lt;script type=&#34;text/&lt;a href=&#34;<a href="http://www.bairuiw.com/tag/javascri&#112;t" target="_blank" rel="external">http://www.bairuiw.com/tag/javascri&#112;t</a>&#34; class=&#34;st_tag internal_tag&#34; rel=&#34;tag&#34; title=&#34;Posts tagged with Javascript&#34;&gt;javascript&lt;/a&gt;&#34;&gt;<br/>var btn = document.getElementById(&#34;text&#34;);<br/>btn.onclick = function() {<br/>alert(this.value); //此处的this是按钮元素<br/>}<br/>&lt;/script&gt;<br/></div></div><br/>（4）CSS e&#173;xpression表达式中使用this关键字<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.woaicss.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> Example Source Code </div><div class="UBBContent"><br/>&lt;table width=&#34;100px&#34; height=&#34;100px&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;div style=&#34;width:e&#173;xpression(this.parentNode.width);&#34;&gt;div element&lt;/div&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br/>&lt;/table&gt;<br/></div></div><br/><strong>12. 如何显示/隐藏一个DOM元素？</strong><br/><div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.woaicss.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> Example Source Code </div><div class="UBBContent"><br/>el.style.display = &#34;&#34;;<br/>el.style.display = &#34;none&#34;;<br/></div></div><br/>el是要操作的DOM元素<br/><br/><br/><strong>13. JavaScript中如何检测一个变量是一个String类型？请写出函数实现</strong><br/><br/>String类型有两种生成方式：<br/>(1)Var str = “hello world”;<br/>(2)Var str2 = new String(“hello world”);<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.woaicss.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> Example Source Code </div><div class="UBBContent"><br/>function IsString(str){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return (typeof str == &#34;string&#34; || str.constructor == String);<br/>}<br/>var str = &#34;&#34;;<br/>alert(IsString(1));<br/>alert(IsString(str));<br/>alert(IsString(new String(str)));<br/></div></div><br/><strong>14. 网页中实现一个计算当年还剩多少时间的倒数计时程序，要求网页上实时动态显示“××年还剩××天××时××分××秒</strong>”<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.woaicss.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> Example Source Code </div><div class="UBBContent"><br/>&lt;!DOCTYPE HTML PUBLIC &#34;-//W3C//DTD HTML 4.01 Transitional//EN&#34; &#34;<a href="http://www.w3.org/TR/html4/loose.dtd" target="_blank" rel="external">http://www.w3.org/TR/html4/loose.dtd</a>&#34;&gt;<br/>&lt;html&gt;<br/>&lt;head&gt;<br/>&nbsp;&nbsp; &lt;meta http-equiv=&#34;Content-Type&#34; content=&#34;text/html; charset=UTF-8&#34;&gt;<br/>&nbsp;&nbsp; &lt;title&gt;倒计时&lt;/title&gt;<br/>&lt;/head&gt;<br/>&lt;body&gt;<br/>&lt;input type=&#34;text&#34; value=&#34;&#34; id=&#34;input&#34; size=&#34;1000&#34;/&gt;<br/>&lt;script type=&#34;text/javascript&#34;&gt;<br/>&nbsp;&nbsp; function counter() {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var date = new Date();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var year = date.getFullYear();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var date2 = new Date(year, 12, 31, 23, 59, 59);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var time = (date2 - date)/1000;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var day =Math.floor(time/(24*60*60))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var hour = Math.floor(time%(24*60*60)/(60*60))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var minute = Math.floor(time%(24*60*60)%(60*60)/60);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var second = Math.floor(time%(24*60*60)%(60*60)%60);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var str = year + &#34;年还剩&#34;+day+&#34;天&#34;+hour+&#34;时&#34;+minute+&#34;分&#34;+second+&#34;秒&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(&#34;input&#34;).value = str;<br/>&nbsp;&nbsp; }<br/>&nbsp;&nbsp; window.setInterval(&#34;counter()&#34;, 1000);<br/>&lt;/script&gt;<br/>&lt;/body&gt;<br/>&lt;/html&gt;<br/></div></div><br/><br/><strong>15. 补充代码，鼠标单击Button1后将Button1移动到Button2的后面</strong><br/><div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.woaicss.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> Example Source Code </div><div class="UBBContent"><br/>&lt;div&gt; &lt;input type=”button” id =”button1″ value=”1″ onclick=”???”&gt;<br/>&lt;input type=”button” id =”button2″ value=”2″ /”&gt; &lt;/div&gt;<br/></div></div><br/><div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.woaicss.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> Example Source Code </div><div class="UBBContent"><br/>&lt;div&gt; &lt;input type=”button” id =”button1″ value=”1″ onclick=”???”&gt;<br/>&lt;input type=”button” id =”button2″ value=”2″ /”&gt; &lt;/div&gt;<br/></div></div><br/><strong>16. JavaScript有哪几种数据类型</strong><br/>简单：Number，Boolean，String，Null，Undefined<br/>复合：Object，Array，Function<br/><br/><strong>17. 下面css标签在JavaScript中调用应如何拼写，border-left-color，-moz-viewport</strong><br/>borderLeftColor<br/>mozViewport<br/><br/><strong>18. JavaScript中如何对一个对象进行深度clone</strong><br/><div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.woaicss.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> Example Source Code </div><div class="UBBContent"><br/>function cloneObject(o) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!o || &#39;object&#39; !== typeof o) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return o;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var c = &#39;function&#39; === typeof o.pop ? [] : {};<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var p, v;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(p in o) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(o.hasOwnProperty(p)) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v = o[p];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(v &amp;&amp; &#39;object&#39; === typeof v) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c[p] = Ext.ux.clone(v);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c[p] = v;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;return c;<br/>};<br/></div></div><br/><strong>19. 如何控制alert中的换行</strong><br/><div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.woaicss.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> Example Source Code </div><div class="UBBContent"><br/>\n alert(“p\np”);<br/></div></div><br/><strong>20. 请实现，鼠标点击页面中的任意标签，alert该标签的名称．（注意兼容性）</strong><br/><div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.woaicss.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> Example Source Code </div><div class="UBBContent"><br/>&lt;!DOCTYPE html PUBLIC &#34;-//W3C//DTD XHTML 1.0 Transitional//EN&#34; &#34;<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" target="_blank" rel="external">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</a>&#34;&gt;<br/>&lt;html xmlns=&#34;<a href="http://www.w3.org/1999/xhtml" target="_blank" rel="external">http://www.w3.org/1999/xhtml</a>&#34;&gt;<br/>&lt;head&gt;<br/>&lt;meta http-equiv=&#34;Content-Type&#34; content=&#34;text/html; charset=gb2312&#34; /&gt;<br/>&lt;title&gt;鼠标点击页面中的任意标签，alert该标签的名称&lt;/title&gt;<br/>&lt;style&gt;<br/>div{ background:#0000FF;width:100px;height:100px;}<br/>span{ background:#00FF00;width:100px;height:100px;}<br/>p{ background:#FF0000;width:100px;height:100px;}<br/>&lt;/style&gt;<br/>&lt;script type=&#34;text/javascript&#34;&gt;<br/>document.onclick = function(evt){<br/>var e = window.event || evt;<br/>var tag = e[&#34;target&#34;] || e[&#34;srcElement&#34;];<br/>alert(tag.tagName);<br/>};<br/>&lt;/script&gt;<br/>&lt;/head&gt;<br/>&lt;body&gt;<br/>&lt;div id=&#34;div&#34;&gt;&lt;span&gt;SPAN&lt;/span&gt;DIV&lt;/div&gt;<br/>&lt;span&gt;SPAN&lt;/span&gt;<br/>&lt;p&gt;P&lt;/p&gt;<br/>&lt;/body&gt;<br/>&lt;/html&gt;<br/></div></div><br/><strong>21. 请编写一个JavaScript函数 parseQueryString，它的用途是把URL参数解析为一个对象，如：</strong><br/>var url = “<a href="http://witmax.cn/index.php?key0=0" target="_blank" rel="external">http://witmax.cn/index.php?key0=0</a>&amp;key1=1&amp;key2=2″;<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.woaicss.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> Example Source Code </div><div class="UBBContent"><br/>function parseQueryString(url){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var params = {};<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var arr = url.split(&#34;?&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (arr.length &lt;= 1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return params;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; arr = arr[1].split(&#34;&amp;&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(var i=0, l=arr.length; i&lt;l; i++){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var a = arr[i].split(&#34;=&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; params[a[0]] = a[1];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return params;<br/>}<br/><br/>var url = &#34;<a href="http://witmax.cn/index.php?key0=0" target="_blank" rel="external">http://witmax.cn/index.php?key0=0</a>&amp;key1=1&amp;key2=2&#34;;<br/>var ps = parseQueryString(url);<br/>alert(ps[&#34;key1&#34;]);<br/></div></div><br/><strong>22. ajax是什么? ajax的交互模型? 同步和异步的区别? 如何解决跨域问题?</strong><br/>Ajax是多种技术组合起来的一种浏览器和服务器交互技术，基本思想是允许一个互联网浏览器向一个远程页面/服务做异步的http调用，并且用收到的数据来更新一个当前web页面而不必刷新整个页面。该技术能够改进客户端的体验。包含的技术：<br/>XHTML：对应W3C的XHTML规范，目前是XHTML1.0。<br/><br/>CSS：对应W3C的CSS规范，目前是CSS2.0<br/>DOM：这里的DOM主要是指HTML DOM，XML DOM包括在下面的XML中<br/>JavaScript：对应于ECMA的ECMAScript规范<br/>XML：对应W3C的XML DOM、XSLT、XPath等等规范<br/>XMLHttpRequest：对应WhatWG的Web Applications1.0规范（<a href="http://whatwg.org/specs/web-apps/current-work/" target="_blank" rel="external">http://whatwg.org/specs/web-apps/current-work/</a>）<br/><br/>同步：脚本会停留并等待服务器发送回复然后再继续<br/>异步：脚本允许页面继续其进程并处理可能的回复<br/><br/>跨域问题简单的理解就是因为JS同源策略的限制，a.com域名下的JS无法操作b.com或c.a.com下的对象，具体场景如下：<br/><br/>PS：（1）如果是端口或者协议造成的跨域问题前端是无能为力的<br/><br/>(2) 在跨域问题上，域仅仅通过URL的首部来识别而不会尝试判断相同的IP地址对应的域或者两个域是否对应一个IP<br/>前端对于跨域的解决办法：<br/>(1) document.domain+iframe<br/>(2) 动态创建script标签<br/><br/><strong>23. 什么是闭包？下面这个ul，如何点击每一列的时候alert其index?</strong><br/><div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.woaicss.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> Example Source Code </div><div class="UBBContent"><br/>&lt;ul id=”test”&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;这是第一条&lt;/li&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;这是第二条&lt;/li&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;这是第三条&lt;/li&gt;<br/>&lt;/ul&gt;<br/></div></div><br/>内部函数被定义它的函数的外部区域调用的时候就产生了闭包。<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.woaicss.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> Example Source Code </div><div class="UBBContent"><br/>(function A() {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var index = 0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var ul = document.getElementById(&#34;test&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var obj = {};<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (var i = 0, l = ul.childNodes.length; i &lt; l; i++) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (ul.childNodes[i].nodeName.toLowerCase() == &#34;li&#34;) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var li = ul.childNodes[i];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;li.onclick = function() {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index++;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(index);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>})();<br/></div></div><br/><strong>24. 请给出异步加载js方案，不少于两种</strong><br/>默认情况javascript是同步加载的，也就是javascript的加载时阻塞的，后面的元素要等待javascript加载完毕后才能进行再加载，对于一些意义不是很大的javascript，如果放在页头会导致加载很慢的话，是会严重影响用户体验的。<br/><br/>异步加载方式：<br/>(1) defer，只支持IE<br/>(2) async：<br/>(3) 创建script，插入到DOM中，加载完毕后callBack，见代码：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.woaicss.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> Example Source Code </div><div class="UBBContent"><br/>function loadScript(url, callback){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var script = document.cr&#101;ateElement(&#34;script&#34;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; script.type = &#34;text/javascript&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (script.readyState){ //IE<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; script.onreadystatechange = function(){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (script.readyState == &#34;loaded&#34; ||<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;script.readyState == &#34;complete&#34;){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;script.onreadystatechange = null;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;callback();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else { //Others: Firefox, Safari, Chrome, and Opera<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; script.onload = function(){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; callback();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br/>&nbsp;&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;script.src = url;<br/>&nbsp;&nbsp;&nbsp;&nbsp;document.body.appendChild(script);<br/>}<br/></div></div><br/><strong><br/>25. 请设计一套方案，用于确保页面中JS加载完全。</strong><br/><div class="UBBPanel codePanel"><div class="UBBTitle"><img src="http://www.woaicss.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> Example Source Code </div><div class="UBBContent"><br/>var n = document.cr&#101;ateElement(&#34;script&#34;);<br/>n.type = &#34;text/javascript&#34;;<br/>//以上省略部分代码<br/>//ie支持script的readystatechange属性<br/>if(ua.ie){<br/>&nbsp;&nbsp; n.onreadystatechange = function(){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var rs = this.readyState;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(&#39;loaded&#39; === rs || &#39;complete&#39;===rs){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n.onreadystatechange = null;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f(id,url); //回调函数<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/>};<br/>//省略部分代码<br/>//safari 3.x supports the load event for script nodes(DOM2)<br/>&nbsp;&nbsp; n.addEventListener(&#39;load&#39;,function(){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f(id,url);<br/>&nbsp;&nbsp; });<br/>//firefox and opera support onload(but not dom2 in ff) handlers for<br/>//script nodes. opera, but no ff, support the onload event for link<br/>//nodes.<br/>}else{<br/>&nbsp;&nbsp; n.onload = function(){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f(id,url);<br/>&nbsp;&nbsp; };<br/>}<br/></div></div><br/><br/><strong>26. js中如何定义class,如何扩展prototype?</strong><br/>Ele.className = “***”; //***在css中定义，形式如下：.*** {…}<br/>A.prototype.B = C;<br/>A是某个构造函数的名字<br/>B是这个构造函数的属性<br/>C是想要定义的属性的值<br/><br/><strong>27. 如何添加html元素的事件,有几种方法.</strong><br/>（1） 为HTML元素的事件属性赋值<br/>（2） 在JS中使用ele.on*** = function() {…}<br/>（3） 使用DOM2的添加事件的方法 addEventListener或attachEvent<br/><br/><strong>28. documen.write和 innerHTML的区别</strong><br/>document.write只能重绘整个页面<br/>innerHTML可以重绘页面的一部分<br/><br/><strong>29. 多浏览器检测通过什么？</strong><br/>（1） navigator.userAgent<br/>（2） 不同浏览器的特性，如addEventListener<br/><br/><strong>30. js的基础对象有那些, window和document的常用的方法和属性列出来</strong><br/>String,Number,Boolean<br/><br/>Window:<br/>方法：setInterval,setTimeout,clearInterval,clearTimeout,alert,confirm,open<br/>属性：name,parent,screenLeft,screenTop,self,top,status<br/><br/>Document<br/>方法：cr&#101;ateElement,execCommand,getElementById,getElementsByName,getElementByTagName,write,writeln<br/>属性：cookie,doctype,domain,documentElement,readyState,URL,<br/><br/><strong>31. 前端开发的优化问题</strong><br/>（1） 减少http请求次数：css spirit,data uri<br/>（2） JS，CSS源码压缩<br/>（3） 前端模板 JS+数据，减少由于HTML标签导致的带宽浪费，前端用变量保存AJAX请求结果，每次操作本地变量，不用请求，减少请求次数<br/>（4） 用innerHTML代替DOM操作，减少DOM操作次数，优化javascript性能<br/>（5） 用setTimeout来避免页面失去响应<br/>（6） 用hash-table来优化查找<br/>（7） 当需要设置的样式很多时设置className而不是直接操作style<br/>（8） 少用全局变量<br/>（9） 缓存DOM节点查找的结果<br/>（10） 避免使用CSS Expression<br/>（11） 图片预载<br/>（12） 避免在页面的主体布局中使用table，table要等其中的内容完全下载之后才会显示出来，显示比div+css布局慢<br/><br/><strong>32. 如何控制网页在网络传输过程中的数据量</strong><br/>启用GZIP压缩<br/>保持良好的编程习惯，避免重复的CSS，JavaScript代码，多余的HTML标签和属性<br/><br/><strong>33. Flash、Ajax各自的优缺点，在使用中如何取舍？</strong><br/>Ajax的优势<br/>（1） 可搜索性<br/>（2） 开放性<br/>（3） 费用<br/>（4） 易用性<br/>（5） 易于开发<br/><br/>Flash的优势<br/>（1） 多媒体处理<br/>（2） 兼容性<br/>（3） 矢量图形 比SVG，Canvas优势大很多<br/>（4） 客户端资源调度，比如麦克风，摄像头<br/>]]></description>
		</item>
		
			<item>
			<link>http://www.woaicss.com/article/js/2011111601.htm</link>
			<title><![CDATA[js练习21—图片横向滚动（带动画）]]></title>
			<author>wo-ai-niqq@163.com(woniu)</author>
			<category><![CDATA[Js/jQuery]]></category>
			<pubDate>Wed,16 Nov 2011 00:36:36 +0800</pubDate>
			<guid>http://www.woaicss.com/default.asp?id=281</guid>
		<description><![CDATA[没美化，没封装，自己琢磨的实现方法，和网上另一流传很广的写法不同（貌似是08年 sina 的mengjia 写的）..<br/><br/><a target="_blank" href="http://www.woaicss.com/works/demo/2011.11/2011111601.html" rel="external">[demo]</a>]]></description>
		</item>
		
			<item>
			<link>http://www.woaicss.com/article/js/2011110401.htm</link>
			<title><![CDATA[js练习20—iphone滑动效果]]></title>
			<author>wo-ai-niqq@163.com(woniu)</author>
			<category><![CDATA[Js/jQuery]]></category>
			<pubDate>Fri,04 Nov 2011 01:20:54 +0800</pubDate>
			<guid>http://www.woaicss.com/default.asp?id=279</guid>
		<description><![CDATA[iphone滑动效果。(网上有用面向对象方法写的)<br/><br/><a target="_blank" href="http://www.woaicss.com/works/demo/2011.11/2011110401.html" rel="external">[demo]</a>]]></description>
		</item>
		
</channel>
</rss>

