??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲精品国产专区91在线,亚洲精品乱码久久久久久,久久亚洲精品高潮综合色a片http://www.tkk7.com/kiant/category/39177.html有才而性缓定属大才Q有气和斯为大智。h偏狭我受之以宽容Qh险仄我持之以坦荡。缓事宜急干Q敏则有功;急事宜缓办,忙则多措? --李叔?/description>zh-cnTue, 01 Jun 2010 21:03:23 GMTTue, 01 Jun 2010 21:03:23 GMT60Javascript学习指南Q第2版)W记(? DOM、Ajax及其数据http://www.tkk7.com/kiant/articles/322267.html黄小?/dc:creator>黄小?/author>Sun, 30 May 2010 03:17:00 GMThttp://www.tkk7.com/kiant/articles/322267.htmlhttp://www.tkk7.com/kiant/comments/322267.htmlhttp://www.tkk7.com/kiant/articles/322267.html#Feedback0http://www.tkk7.com/kiant/comments/commentRss/322267.htmlhttp://www.tkk7.com/kiant/services/trackbacks/322267.html 1、DOM
2、节点属性和Ҏ
3、Ajax安全和工作区
4、Ajax数据QXML?JSONQJavaScript对象W号Q?/a>





1、DOM

     ?W3C关于 DOM的规范中Q将 document元素描述Z个节?node)集合Q他们之间是以有层次的树形结构连接的。你不仅可以从树上读取节点,q可以删除或创徏新的节点?br />
#document
html
  head
    title
  body
    h1
    div
      p
        #text
      p
        #text


2、节点属性和Ҏ

     对于文档树上的每个节炚w拥有 DOM(Core)?Node对象中定义的基本属性和基本Ҏ集。Node对象的属性主要包括:

nodeNameQ对象名Uͼ?head元素的名U就?HEADQ?br /> nodeValueQ如果不是一个元素,则返回对象|
nodeTypeQ用数字表示的节点类型;
parentNodeQ当前节点的父节点;
childNodesQ由其子节点l成?NodeListQ前提是存在子节点;
firstChildQ由子节点组成的 NodeList中的W一个节点;
lastChildQ由子节点组成的 NodeList中的最后一个节点;
previousSiblingQ如果当前节Ҏ位于 NodeList中的子节点,那么它表C的是该列表中的前一个节点;
nextSiblingQ如果当前节Ҏ位于 NodeList中的子节点,那么它表C的是该列表的下一个节点;
attributesQ一?NamedNodeMapQ它是以?值对形式表示的,是该元素的属性列表;
ownerDocumentQ拥有的 document对象Q当你拥有多?document对象时它比较有用Q?br /> namespaceURIQ命名空间的 URIQ如果有的话Q他是针对节点的Q?br /> PrefixQ命名空间的前缀Q如果有的话Q它是针对节点的Q?br /> localNameQ如果指定了 namespaceURI的话Q它表示的是节点的本地名?


3、Ajax安全和工作区

     ?Ajax遵@ JavaScript中相同源、相同域的规则:?Web面中只能调用相同服务器Q相同域Q的 Web服务Q也是_服务器端面与服务器发送请求的面处于相同的服务器、相同的域中?br />
     但是对于 AjaxE序而言Q向本地服务器端h一?Web服务Q然后接收本地服务器的返回信息即可。它q不兛_本地 Web服务实际上是否通过讉Kq程 Web服务实现的?


4、Ajax数据QXML?JSONQJavaScript对象W号Q?/strong>


XML格式?Ajax应答

     好处是比单的字符串或 HTML片段更多元。另外,你还可以向对?Web面元素那样Q直接通过 DOMҎ来操?Ajax调用q回?XML格式应答?br />
     保在服务器端应用程序在q回数据时设|了正确的数?MINEcd text/xmlQ然后通过 XMLHttpRequest对象?responseXML容器来获取应{信息?br />

JSON

     JSON是一U?#8220;轻量U的数据交换格式”。和一l由逗号分开的字W串Q以及处理复杂(成本高昂Q的 XML相比QJSON是一U很Ҏ服务器端数据结构{?JavaScript对象的数据格式?br />
     JSON实际上就是?JavaScript语法定义的对象,一个对象的语法包括一对大括号以及其中的成员:
     object{ } or object { string : value ...}

     对于数组而言Q他是由一l元素加上一Ҏ括号l成的:
     array[] or array[ value, value, value, ..., value ]

注:?JavaScript可以用单引号或双引号来引用字W串Q?JSON只支持双引号?br />
CZQ在 PHP脚本中用简单的 JSON
$result = '[ { "value" : "stlou", "title" : "St. Louis" }, ' .
          '  { "value" : "kc" , "title" : "Kansas City" } ]';


JSON对象

     ?http://www.json.org/js.html上可以找C?JSON JavaScriptE序库,它提供了一些基于该E序库的 JSON对象。包含了直接讉K JSON对象的静态方法:
JSON.parseQ基于指定的 JSON格式字符串创Z?JavaScript对象Q?br /> JSON.stringifyQ将一?JavaScript对象序列化成一?JSON格式的字W串?br />

JSON CZ1Q?br />
//?nbsp;JSON字符串进?#8220;计算”
var response = JSON.parse(xmlHttpObj.responseText);

var citySelection = document.getElementById("citySelection");
var name = value = null;

//处理?nbsp;JSON对象q回的数?/span>
for (var i=0; i<response.length; i++) {
    name 
= response[i].title;
    value 
= response[i].value;
    citySelection.options[i] 
= new Option(name, value);
}


JSONCZ2Q?
//从服务器获得?nbsp;JSON对象实例Q?/span>
"title" : "Appletini"
  
"ingredients" : [ { "ingredient" : "1 ounce vodka"},
                    { 
"ingredient" : "1/2 ounce Sour Apple Pucker or apple schnapps "} ],
  
"instruction" : "Mix vodka and schnapps in a glass filled with ice." }


//============================================================
//
处理 JSON数据

//创徏对象
var recipeObj = JSON.parse(xmlhttp.responseText);

var recipe = document.createElement('div');
recipe.id 
= 'recipe';
recipe.className 
= 'recipe';

//d标题
var title = recipeObj['title'];
var titleNode = document.creteElement('h3');
titleNode.appendChild(document.createTextNode(title));
recipe.appendChild(titleNode);

//d配方成分
var ingredients = recipeObj.ingredients;
for (var i=0; i<ingredients.length; i++){
    
var item = ingredients[i].ingredient;
    
}

.
body[
0].appendChild(recipe);


]]>
Javascript学习指南Q第2版)W记(? 览器对象、cookiehttp://www.tkk7.com/kiant/articles/322244.html黄小?/dc:creator>黄小?/author>Sat, 29 May 2010 13:46:00 GMThttp://www.tkk7.com/kiant/articles/322244.htmlhttp://www.tkk7.com/kiant/comments/322244.htmlhttp://www.tkk7.com/kiant/articles/322244.html#Feedback0http://www.tkk7.com/kiant/comments/commentRss/322244.htmlhttp://www.tkk7.com/kiant/services/trackbacks/322244.html 1、window对象
2、同源安全策?/a>
3、cookie



     览器对象模型(BOMQ是一l从览器上下文l承而来的对象,q也是绝大多?JavaScript应用E序中函数运行的上下文。有时它也被UC?DOM Level 0Q或者就?DOM?br />
     BOM是一l有限的公共 Web对象Q也是一个层ơ化的对象集Q每个层ơ上的对象都可以通过它们的父对象来访问,比如 window[navigator, location, frames, screen, history, document[forms, cookie, link/anchors, images, embeds/plug-ins, all]]?br />
     讉K对象Ӟ你可以:
     var theImage = document.form[0].elements["someelement"].value;


1、window对象

     览器的 window对象装了整个浏览器环境Q包?window?chrome"Q组成浏览器H体的通用lgQ、实际的 Web面Q以及页面中的事件?br />
     通过 window可以手动讄览器状态条上的状态,执行打开一个新H口、重新调整已昄H口的大、关闭窗口等操作。不q随着动?Web效果?Ajax的流行,q种弹出式窗口越来不被喜Ƣ?br />
window对象的方法和属性可以分?c:

a. 创徏新窗口,l护现有H口行ؓ

     弹出式对话框Qalert、confirm?prompt
     创徏自定义窗口:window.open()
     l护H口Q通过H口的引用能够完成该H口的维护,要维护父H口则用关键字 openerQ要l护包含当前q行脚本的窗口,则应该用关键字 self?br />

b. 在窗口中创徏带分区的文档Q和iframesQ?br />
     frame对象定义了以下元素:parent、length?name。对于跨帧通信而言Qname?parent属性特别重要。其父元?framesetQ集,包括帧的H口Q可以通过每个帧的名字讉K所有子帧(也可以通过帧数l,以对象数量作为烦引|Q每个都可以通过通用的关键字 parent来访问该帧集。兄弟元素之间可以通过 parent和对方的 name属性来讉K?br />
     和标准的帧不一Piframe是内嵌在面中的。你可以为其指定高度和宽度,如果它们都讄?Q那么它将被隐藏v来。iframe会把它嵌入到的页面视q父元素,q也是它和更高层面q行通信的方法。通常Q你可以使用 document?getElementByIdҎ来访问它Q也可以使用 target属性蝲入其内容?br />

c. 定时器的创徏和控?br />
     有两cd时器Q一cL一ơ性的Q另一cL周期性用的。两U定时器都能取消Q一ơ性定时器Ҏ只会被调用一ơ?br />
要想创徏一个不重复触发的定时器Q可以?setTimeoutҎQ?br /> var tmOut = setTimeout("func", 5000, "param1", param2,,,,, paramn);

如果x除这个定时器Q可以?clearTimeoutҎQ?br /> clearTimeout(tmOut);

如果你想周期性地使用q个定时器,那么应调?setIntervalҎQ?br /> var tmOut = setInterval("functionName", 5000);

     同样Q如果想暂停或取消这个周期性定时器Q可以?clearIntervalҎ。如果你惛_C个周期性定时器Q但又想在参C指定一个函数文字量Q那么你可以在每ơ定时器q期时再?setTimeout函数重新讄q个定时器?br />
注:
     ?IE览器中QsetInterval?setTimeoutҎ是不支持在最后添加函数调用所需参数的?br />

d. 用来控制览器其他元?/strong>

history对象
     history对象负责l护览器中面载入操作的历史记录。同P其方法和属性能够完成通过览器的后退和前q按钮所能实现的D操作?br />
screen对象
     screen对象所包含的信息是屏幕昄有相关的Q包括其宽度、高度,以及颜色或像素浓淡。虽然他们不是很常用Q但他们对于那些需要修Ҏ览器H口大小、创建需要特定调色板的带色彩对象{功能而言是不错的选择?br />
navigator对象
     navigator对象中提供的是和览器或其他讉K该页面的用户代理相关的信息。通过它可以检查操作系l、浏览器或浏览器族、安全策略、语a以及 cookie是否启用?br />
document对象
1.链接和锚
     document对象?links集合是由面中所有超链接l成的,它的讉KҎ和数l一栗?

2.囑փ
     和链接一P囑փ也有其对应的对象Q也可以直接讄他们的属性,如表C图?URL?src属性?br />
3.innerHTML
     使用 innerHTML属性可以修攚w面中M一?HTML元素Q它之所以仍然流行,是因为通过它修攚w面元素时无需构徏整个面的内容,你只需创徏一?HTML格式的字W串Q然后通过 innerHTML可以添加到 Web面中。不q,使用 innerHTML意味着无论?Web面d了什么,他们都无法融合到面?document树上Q因此如果你混合使用 innerHTML和新?DOMҎ会带来很大的破坏?


2、同源安全策?/strong>

     同源安全{略保了不同域名、协议或端口的页面之间不能够通过脚本q行通信。同源安全策略将应用于不同页面之间的通信Q包括父H口中的表单和内嵌窗口之间的通信Q如帧及 iframe?


3、cookie

     cookie的意义就是一个带有过期时间、域名、\径的型的键/值对Q之所以需要提供这些消息,是ؓ了确保正的服务器能够读取到正确?cookie。这些信息将作ؓ Webh的一部分发送,因此在服务器端和览器都能访问这些数据?br />
讄、读取、删?cookie
// if cookie enabled
window.onload = function() {
    
if (navigator.cookieEnabled) {
        
var sum = readCookie("sum");
        
if (sum) {
            
var iSum = parseInt(sum) + 1;
            alert(
"cookie count is " + iSum);
            
            
if (iSum > 5) {
                eraseCookie(
"sum");                
            } 
else {
                setCookie(
"sum", iSum);
            }
        } 
else {
            alert(
"no cookie, setting now");
            setCookie(
"sum"0);
        }
    }
}

// ?nbsp;cookie有效期设|ؓ 2016q?/span>
function setCookie(key, value) {
    
var cookieDate = new Date(20161110193030);
    document.cookie 
= key + "=" + encodeURI(value) + "; expires=" + cookieDate.toGMTString() + "; path=/";
}

// 在每?nbsp;cookie之前用分号隔开
function readCookie(key) {
    
var cookie = document.cookie;
    
var first = cookie.indexOf(key + "=");
    
    
// 存在 cookie
    if (first >= 0) {
        
var str = cookie.substring(first, cookie.length);
        
var last = str.indexOf(";");
        
        
// 如果是最后一?nbsp;cookie
        if (last < 0) last = str.length;
        
        
// 获取 cookie的?/span>
        str = str.substring(0, last).split("=");
        
return decodeURI(str[1]);
    } 
else {
        
return null;
    }
}

// ?nbsp;cookie的有效期讄成过去,以达到删?nbsp;cookie的目?/span>
function eraseCookie (key) {
    
var cookieDate = new Date(20001110193030);
    document.cookie 
= key + "= ; expirse=" + cookieDate.toGMTString() + "; path/";
}


]]>
Javascript学习指南Q第2版)W记(? 表单、表单事件及校验http://www.tkk7.com/kiant/articles/322211.html黄小?/dc:creator>黄小?/author>Sat, 29 May 2010 07:50:00 GMThttp://www.tkk7.com/kiant/articles/322211.htmlhttp://www.tkk7.com/kiant/comments/322211.htmlhttp://www.tkk7.com/kiant/articles/322211.html#Feedback0http://www.tkk7.com/kiant/comments/commentRss/322211.htmlhttp://www.tkk7.com/kiant/services/trackbacks/322211.html 1、跨览器兼容的事g处理
2、选择列表?br /> 3、单选按钮和复选框
4、测?/a>




1、跨览器兼容的事g处理

//可复用的事g处理函数
function catchEvent(eventObj, event, eventHandler) {
  
if (eventObj.addEventListener) {
    eventObj.addEventListener(event, eventHandler, 
false);
  } 
else if (eventObj.attachEvent) {
    event 
= "on" + event;
    eventObj.attachEvent(event, eventHandler);
  }   
}

//可复用的事g取消函数
function cancelEvent(event) {
  
if (event.preventDefault) {
    event.preventDefault();
    event.stopPropagation();
  } 
else {
    event.retrunValue 
= false;
    event.cancelBubble 
= true;
  }    
}



2、选择列表?/strong>

var opts = document.getElementById("someForm").selectOpts.options;
for (var i=0; i<opts.length; i++) {
  
if (opts[i].selected) {
    alert(opts[i].text 
+ " " + opts[i].value);
  }
}

a.动态添加一个新的选项Q由于数l的索引值是?0开始编LQ因此只要以数组?length属性作为烦引|可以在数组的最后面d一个新的数l元素?br /> opts[opts.length] = new Option["Option Four", "Opt4"];

b.删除一个选项Q只需数l中该选项讄?nullQ这h作将会重新安排数l,而不会导致编号不q箋的现象?br /> opts[2] = null;

如果惛_除所有选项Q那么只需数l的 length讄?0?br /> opts.length = 0;


自动选择
//catchEvent(document.getElementById("selectOpts"), "change", checkSelect);
var theEvent = evnt ? evnt : window.event;

var opts = document.getElementById("someForm").selectOpts.options;
for (var i=0; i<opts.length; i++) {
  
if (opts[i].selected) {
    
switch (opts[i].value) {
      
case "Opt1" : opts[i+1].selected = true;
        
break;
      
case "Opt3" : opts[i+1].selected = true;
        
break;
      
case "Opt5" : opts[i+1].selected = true;
        
break;
    }
  }
}



3、单选按钮和复选框

//单选按钮访问:
var buttons = document.getElementById("radioGroup");
for (var i=0; i<buttons.length; i++)
{
  
if (buttons[i].checked) {
    alert(buttons[i].value);
  }
}


//复选框选择Q?/span>
var colorOpts = document.getElementById("someForm").getElementByTagName("input");

//遍历复选框中的每个 checkboxQ检查是否被选中
var isChecked = false;
for (var i=0; i<colorOpts.length; i++) {
  
if ((colorOpts[i].type == "checkbox"&& (colorOpts[i].checked)) {
    ifChecked 
= true;
    
break;
  }
}

//没有一?nbsp;checkbox被选中
if (!isChecked) {
  alert(
"no choose!");
  
}



4、测?/strong>

QQ如果表单数据不完整或无效,如何停止表单提交操作Q?br /> AQ?br />      如果你?DOM Level 0的事Ӟ那么只要在事件句柄中q回 false|q且在事件句柄脚本中取消表单提交操作卛_?br />      如果你?DOM Level 2模型Q那么就?event对象?cancelBubble属性设|ؓ trueQ针?IEQ,q调用其 preventDefaultҎQ针对其他浏览器Q?br />

]]>
Javascript学习指南Q第2版)W记(? 排错、调试、事件捕?/title><link>http://www.tkk7.com/kiant/articles/322189.html</link><dc:creator>黄小?/dc:creator><author>黄小?/author><pubDate>Sat, 29 May 2010 01:25:00 GMT</pubDate><guid>http://www.tkk7.com/kiant/articles/322189.html</guid><wfw:comment>http://www.tkk7.com/kiant/comments/322189.html</wfw:comment><comments>http://www.tkk7.com/kiant/articles/322189.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/kiant/comments/commentRss/322189.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kiant/services/trackbacks/322189.html</trackback:ping><description><![CDATA[<br /> <a href="#1">1、排错、调?/a><br /> <a href="#2">2、事?/a><br /> <a href="#3">3、Event对象</a><br /> <a href="#4">4、事件冒?/a><br /> <a href="#5">5、事件句柄和 this</a><br /> <a href="#6">6、DOM Level 2事g模型</a><br /> <a href="#7">7、测?/a><br /> <br /> <br /> <br /> <br /> <a id="1" name="1"></a><strong><br /> 1、排错、调?/strong><br /> <br />      Firebug是最常用?Firefox开发工P同时常用?Web工具q有 Web Developer toolkitQ该工具功能包括面 HTML?CSS代码的校验、可讉K性检查、查?CSS?cookies、检查图像、查?JavaScript修改后的面源代码(包括动态源代码Q? <hr color="#3366ff" size="1" /> <br /> <a id="2" name="2"></a><strong><br /> 2、事?br /> </strong><br />      事g包括Q用L面事Ӟ鼠标、键盘触发的Q、逻辑事gQ一个处理的l果Q、和变化事gQ修Ҏ档的操作Q?br /> <br /> <h2>事g句柄 (Event Handlers)</h2> <p>HTML 4.0 的新Ҏ之一是能够 HTML 事g触发览器中的行为,比如当用LL?HTML 元素时启动一D?JavaScript。下面是一个属性列表,可将之插?HTML 标签以定义事件的行ؓ?/p> <table class="dataintable"> <tbody> <tr> <th style="width: 20%">属?/th> <th>此事件发生在何时...</th> <th style="width: 7%">IE</th> <th style="width: 7%">F</th> <th style="width: 7%">O</th> <th style="width: 7%">W3C</th> </tr> <tr> <td><a target="_top">onabort</a></td> <td>囑փ的加载被中断?/td> <td>4</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a target="_top">onblur</a></td> <td>元素失去焦点?/td> <td>3</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a target="_top">onchange</a></td> <td>域的内容被改变?/td> <td>3</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a target="_top">onclick</a></td> <td>当用LL个对象时调用的事件句柄?/td> <td>3</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a target="_top">ondblclick</a></td> <td>当用户双L个对象时调用的事件句柄?/td> <td>4</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a target="_top">onerror</a></td> <td>在加载文档或囑փ时发生错误?/td> <td>4</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a target="_top">onfocus</a></td> <td>元素获得焦点?/td> <td>3</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a target="_top">onkeydown</a></td> <td>某个键盘按键被按下?/td> <td>3</td> <td>1</td> <td>No</td> <td>Yes</td> </tr> <tr> <td><a target="_top">onkeypress</a></td> <td>某个键盘按键被按下ƈ村ּ?/td> <td>3</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a target="_top">onkeyup</a></td> <td>某个键盘按键被松开?/td> <td>3</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a target="_top">onload</a></td> <td>一张页面或一q图像完成加载?/td> <td>3</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a target="_top">onmousedown</a></td> <td>鼠标按钮被按下?/td> <td>4</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a >onmousemove</a></td> <td>鼠标被移动?/td> <td>3</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a target="_top">onmouseout</a></td> <td>鼠标从某元素Ud?/td> <td>4</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a target="_top">onmouseover</a></td> <td>鼠标Ud某元素之上?/td> <td>3</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a target="_top">onmouseup</a></td> <td>鼠标按键被松开?/td> <td>4</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a target="_top">onreset</a></td> <td>重置按钮被点凅R?/td> <td>4</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a target="_top">onresize</a></td> <td>H口或框架被重新调整大小?/td> <td>4</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a target="_top">onselect</a></td> <td>文本被选中?/td> <td>3</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a target="_top">onsubmit</a></td> <td>认按钮被点凅R?/td> <td>3</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a target="_top">onunload</a></td> <td>用户退出页面?/td> <td>3</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> </tbody> </table> <em style="font-size: 8pt">注:HTML DOM Event 对象 http://www.w3school.com.cn/htmldom/dom_obj_event.asp</em><br /> <br /> <br /> <strong>内联模式/内联注册模式</strong>Q?br /> 以属性的形式?HTML元素d属性的Ҏ?br /> <body onload="var 1=23; i*=3; alert(i);"><br /> <body onload="calcNumber();"><br /> <br /> <strong>传统模式/传统注册模式</strong>Q?br /> 通过对象属性将一个函数指zؓ事g句柄。如果想用事g处理Q那么可以将事g句柄的D?null?br /> window.onload = calcNumber;<br /> <br /> <br /> 注:<br />      ?DOM Level 0事g模型中,M对象只允许指定一个事件句柄。如果你想针Ҏ一特定对象的某个事件指定多个函敎ͼ则需要在事g句柄代码中列Z们:<br /> <br /> 内嵌模式Q?br /> <body onload="helloMsg(); helloTwice();"><br /> <br /> 传统模式Q?br /> function helloMsg() {<br />     var helloString = "hello there";<br />     alert(helloString);<br />     helloTwice();<br /> }<br /> <br /> 当要求浏览器停止执行事g行ؓQ可以从事g句柄函数中返?false倹{? <hr color="#3366ff" size="1" /> <br /> <a id="3" name="3"></a><strong><br /> 3、Event对象<br /> </strong><br />      Event对象是和所有事件相关的。它有一些用来提供事件相关信息的属性,?Web面中鼠标点ȝ位置?br /> <br />      IE?Event视ؓ window对象的属性。当处理事gӞ通过E序讉K window对象Q其所包含的数据也会相应的q行填充? <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">function</span><span style="color: #000000"> mouseDown() {<br />     </span><span style="color: #0000ff">var</span><span style="color: #000000"> locString </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">X = </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> window.event.screenX </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000"> Y = </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> window.event.screenY;<br />     alert(locString);<br /> }<br /> <br /> document.onmousedown = mouseDown;</span></div> <br />      在基?Netscape的浏览器Q如 Firefox、Mozilla、Opera?SafariQ中Q获?Event对象的方法是不同的:他将作ؓ函数的一部分传入? <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">function</span><span style="color: #000000"> mouseDown(theEvent) {<br />     </span><span style="color: #0000ff">var</span><span style="color: #000000"> locString </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">X = </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> theEvent.screenX </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000"> Y = </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> theEvent.screenY;<br />     alert(locString);<br /> }<br /> <br /> document.onmousedown </span><span style="color: #000000">=</span><span style="color: #000000"> mouseDown;</span></div> <br />      处理q些览器差异的Ҏ之一是检查传入函数的 Event对象是否已经实例化。如果是Q那么将q个 Event对象赋给一个局部变量;否则Q将假定 window.event事gQƈ其赋给q个局部变量? <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">function</span><span style="color: #000000"> mouseDown(nsEvent) {<br />     </span><span style="color: #0000ff">var</span><span style="color: #000000"> theEvent </span><span style="color: #000000">=</span><span style="color: #000000"> nsEvent </span><span style="color: #000000">?</span><span style="color: #000000"> nsEvent : window.event;    </span><span style="color: #008000">//</span><span style="color: #008000">判断 nsEvent对象是否已定义。定义则赋|否则选择 window.event属?/span><span style="color: #008000"><br /> </span><span style="color: #000000">    </span><span style="color: #0000ff">var</span><span style="color: #000000"> locString </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">X = </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> theEvent.screenX </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000"> Y = </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> theEvent.screenY;<br />     alert(locString);<br /> }<br /> <br /> document.onmousedown </span><span style="color: #000000">=</span><span style="color: #000000"> mouseDown;</span></div> <br /> <br /> <h2>鼠标 / 键盘属?/h2> <table class="dataintable"> <tbody> <tr> <th style="width: 20%">属?/th> <th>描述</th> <th style="width: 7%">IE</th> <th style="width: 7%">F</th> <th style="width: 7%">O</th> <th style="width: 7%">W3C</th> </tr> <tr> <td><a >altKey</a></td> <td>q回当事件被触发Ӟ"ALT" 是否被按下?/td> <td>6</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a >button</a></td> <td>q回当事件被触发Ӟ哪个鼠标按钮被点凅R?/td> <td>6</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a >clientX</a></td> <td>q回当事件被触发Ӟ鼠标指针的水q_标?/td> <td>6</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a >clientY</a></td> <td>q回当事件被触发Ӟ鼠标指针的垂直坐标?/td> <td>6</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a >ctrlKey</a></td> <td>q回当事件被触发Ӟ"CTRL" 键是否被按下?/td> <td>6</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a >metaKey</a></td> <td>q回当事件被触发Ӟ"meta" 键是否被按下?/td> <td>No</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a >relatedTarget</a></td> <td>q回与事件的目标节点相关的节炏V?/td> <td>No</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a >screenX</a></td> <td>q回当某个事件被触发Ӟ鼠标指针的水q_标?/td> <td>6</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a >screenY</a></td> <td>q回当某个事件被触发Ӟ鼠标指针的垂直坐标?/td> <td>6</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a >shiftKey</a></td> <td>q回当事件被触发Ӟ"SHIFT" 键是否被按下?/td> <td>6</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> </tbody> </table> <em style="font-size: 8pt">注:HTML DOM Event 对象 http://www.w3school.com.cn/htmldom/dom_obj_event.asp</em><br /> <br /> 注:<br />      ?IE中,fromElement 对于 mouseover ?mouseout 事gQfromElement 引用Ud鼠标的元素?nbsp;<br />      而在 Mozilla/Firefox中,relatedTarget q回与事件的目标节点相关的节炏V?<br /> 要解x览器差异Q可以用:<br /> var oldElement = theEvent.fromElement ? theEvent.fromElement : theEvent.relatedTarget; <hr color="#3366ff" size="1" /> <br /> <a id="4" name="4"></a><strong><br /> 4、事件冒?br /> </strong><br />      如果你ؓ多个嵌套的元素设|相同的事g句柄Q会发生什么呢Q他们将以什么样的顺序触发?如果你想使得一ơ只影响一个元素,那么如何保存触发事g句柄的事件呢Q?br /> <br />      要管理元素堆栈中的事Ӟ其中一个方法就是众所周知的事件冒泡。在事g冒中,最内部的元素将首先触发该事Ӟ然后堆栈内的下一个元素触发该事gQ以此类推,直到最外面的元素。如果事件句柄被指定l所有元素,那么q些事g依ơ被触发?br /> <br />      如果 div2?div1内部Q?div1又在 document内部Q三者都做了事g处理。当事g触发的时候,优先最里面?div2元素Q然后是 div1元素Q最后是 document元素?br /> <br />      如果你有一个元素堆栈,q且只希望一个元素触发该事g句柄Q那么你可以取消事g冒机制。如果在 IE中要取消一个事件冒泡,可以使用 IE中事件的 cancelBubble属性;对于 Mozilla而言Q则应该使用事g?stopPropagationҎ。你可以先检?stopPropagationҎ是否存在Q然后根据其l果定使用哪种ҎQ? <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">function</span><span style="color: #000000"> stopEvent(evnt) {<br />     </span><span style="color: #0000ff">if</span><span style="color: #000000"> (evnt.stopPropagation) evnt.stopPropagation;<br />     </span><span style="color: #0000ff">else</span><span style="color: #000000"> evnt.cancelBubble </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">true</span><span style="color: #000000">;<br /> }<br /> </span><span style="color: #008000">//</span><span style="color: #008000">注:IE 7中调试出错,提示信息 "stopPropagation为空或不是对??/span></div> <hr color="#3366ff" size="1" /> <br /> <a id="5" name="5"></a><strong><br /> 5、事件句柄和 this<br /> </strong><br />      this关键字表C的是当前调用的函数或者方法的所有者。对于一个全局变量而言Q它表示的就?window对象。对于一个对象的Ҏ而言Q它表示的就是该对象实例。而在一个事件句柄中Q它表示的就是接收到该事件的元素? <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">first</span><span style="color: #000000">"</span><span style="color: #000000">).onmousedown </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">function</span><span style="color: #000000">() {<br />     alert(</span><span style="color: #0000ff">this</span><span style="color: #000000">);    </span><span style="color: #008000">//</span><span style="color: #008000">?nbsp;Firefox中将输出 "[object HTMLDivElement]"</span><span style="color: #008000"><br /> </span><span style="color: #000000">    alert(</span><span style="color: #000000">"</span><span style="color: #000000">first element event</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> }</span></div> <hr color="#3366ff" size="1" /> <br /> <a id="6" name="6"></a><strong><br /> 6、DOM Level 2事g模型</strong><br /> <br />      对于堆栈内元素的事g处理Q还有一U被UCؓ事g捕捉(event capturing)?cascade-down的事件处理机制。对于前面这个包?个元素的CZ而言Q事件将从最外面的元素开始触发:window -> div1 -> div2?br /> <br />      老事件模型和新的 DOM Level 2事g模型之间Q主要区别:<br /> a.C件模型ƈ不依赖于特定的事件来处理属性;<br /> b.你可以对M一个对象的M一U事件注册多个事件句柄函数?br /> <br />      新的事g句柄提供?个方法:<br /> addEventListenerQ添加一个事件监听器Q?br /> removeEventListenerQ删除一个事件监听器Q?br /> dispatchEventQ分发一个新的事件?br /> <br /> CZQ?br /> object.addEventListener('event', eventFunction, boolean);<br /> <br />      ?click?load之类的事件是其第一参数Q第二个参数是指定的事g句柄函数Q第三个参数用来指定事g是以 cascade-down或者冒泡模式处理的。当W三个参Cؓ false时这个事件监听器以冒模式处理Q否则将把这个事件监听器Ҏ事g捕捉模型? <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">function</span><span style="color: #000000"> cascadeDown(evnt) {<br />     alert(</span><span style="color: #000000">"</span><span style="color: #000000">Capturing: </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #0000ff">this</span><span style="color: #000000">);<br /> }<br /> <br /> </span><span style="color: #0000ff">function</span><span style="color: #000000"> bubbleUp(evnt) {<br />     alert(</span><span style="color: #000000">"</span><span style="color: #000000">Bubbling: </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #0000ff">this</span><span style="color: #000000">);<br /> }<br /> <br /> window.onload </span><span style="color: #000000">=</span><span style="color: #000000"> setup;<br /> <br /> </span><span style="color: #0000ff">function</span><span style="color: #000000"> setup(evnt) {<br />     </span><span style="color: #008000">//</span><span style="color: #008000">事g捕捉</span><span style="color: #008000"><br /> </span><span style="color: #000000">    document.addEventListener(</span><span style="color: #000000">"</span><span style="color: #000000">click</span><span style="color: #000000">"</span><span style="color: #000000">, cascadeDown, </span><span style="color: #0000ff">true</span><span style="color: #000000">);<br />     document.forms[</span><span style="color: #000000">0</span><span style="color: #000000">].addEventListener(</span><span style="color: #000000">"</span><span style="color: #000000">click</span><span style="color: #000000">"</span><span style="color: #000000">, cascadeDown, </span><span style="color: #0000ff">true</span><span style="color: #000000">);<br />     document.forms[</span><span style="color: #000000">0</span><span style="color: #000000">].elements[</span><span style="color: #000000">0</span><span style="color: #000000">].addEventListener(</span><span style="color: #000000">"</span><span style="color: #000000">click</span><span style="color: #000000">"</span><span style="color: #000000">, cascadeDown, </span><span style="color: #0000ff">true</span><span style="color: #000000">);<br />     <br />     </span><span style="color: #008000">//</span><span style="color: #008000">事g冒</span><span style="color: #008000"><br /> </span><span style="color: #000000">    document.addEventListener(</span><span style="color: #000000">"</span><span style="color: #000000">click</span><span style="color: #000000">"</span><span style="color: #000000">, bubbleUp, </span><span style="color: #0000ff">false</span><span style="color: #000000">);<br />     document.forms[</span><span style="color: #000000">0</span><span style="color: #000000">].addEventListener(</span><span style="color: #000000">"</span><span style="color: #000000">click</span><span style="color: #000000">"</span><span style="color: #000000">, bubbleUp, </span><span style="color: #0000ff">false</span><span style="color: #000000">);<br />     document.forms[</span><span style="color: #000000">0</span><span style="color: #000000">].elements[</span><span style="color: #000000">0</span><span style="color: #000000">].addEventListener(</span><span style="color: #000000">"</span><span style="color: #000000">click</span><span style="color: #000000">"</span><span style="color: #000000">, bubbleUp, </span><span style="color: #0000ff">false</span><span style="color: #000000">);<br /> }<br /> <br /> </span><span style="color: #008000">/*</span><span style="color: #008000"><br /> ?nbsp;Firefox中,单击按钮顺序生?个对话框<br /> <br /> Capturing: [object HTMLDocument]<br /> Capturing: [object HTMLFormElement]<br /> Capturing: [object HTMLInputElement]<br /> Bubbling: [object HTMLInputElement]<br /> Bubbling: [object HTMLFormElement]<br /> Bubbling: [object HTMLDocument]<br /> <br /> </span><span style="color: #008000">*/</span></div> <br /> <br />      如果你想停止事g执行Ӟ可以在函C调用 stopPropagationҎQ?br /> function cascadeDown(evnt) {<br />     ...<br />     evnt.stopPropagation();<br /> }<br /> <br /> <br />      如果要彻底删除一个事件监听器Q可以?removeEventListenerҎQ?br /> document.removeEventListener("click", cascadeDown, true);<br /> <br /> <br />      ?IE中,?addEventListener?removeEventListenerҎ怼的是 attachEvent?detachEventQ对应语法是Q?br /> object.attachEvent("eventhandler", function);<br /> W一个参数是事g句柄Q第二个是其函数。detachEvent语法cM?br /> <br /> <br /> <strong>跨浏览器解决ҎQ?/strong><br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">window.onload </span><span style="color: #000000">=</span><span style="color: #000000"> setup;<br /> window.onunload </span><span style="color: #000000">=</span><span style="color: #000000"> cleanup;<br /> <br /> </span><span style="color: #0000ff">function</span><span style="color: #000000"> setup(evnt) {<br />     </span><span style="color: #0000ff">var</span><span style="color: #000000"> evtObject </span><span style="color: #000000">=</span><span style="color: #000000"> document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">clickme</span><span style="color: #000000">"</span><span style="color: #000000">);<br />     <br />     </span><span style="color: #008000">//</span><span style="color: #008000">查对象模?/span><span style="color: #008000"><br /> </span><span style="color: #000000">    </span><span style="color: #0000ff">if</span><span style="color: #000000"> (evtObject.addEventListener) evtObject.addEventListener(</span><span style="color: #000000">"</span><span style="color: #000000">click</span><span style="color: #000000">"</span><span style="color: #000000">, clickMe, </span><span style="color: #0000ff">false</span><span style="color: #000000">);<br />     </span><span style="color: #0000ff">else</span><span style="color: #000000"> </span><span style="color: #0000ff">if</span><span style="color: #000000"> (evtObject.attachEvent) evtObject.attachEvent(</span><span style="color: #000000">"</span><span style="color: #000000">onclick</span><span style="color: #000000">"</span><span style="color: #000000">, clickMe);<br />     </span><span style="color: #0000ff">else</span><span style="color: #000000"> </span><span style="color: #0000ff">if</span><span style="color: #000000"> (evtObject.onclick) evtObject.onclick</span><span style="color: #000000">=</span><span style="color: #000000">clickMe;    <br /> }<br /> <br /> </span><span style="color: #008000">/*</span><span style="color: #008000">清理<br /> ?nbsp;IE中,需要跟t?nbsp;window?nbsp;unload事gQ然后调?nbsp;detachEventҎ清理Q释攄应的内存<br /> ?nbsp;addEventListenerҎ使用的内存是无需清理的?br /> </span><span style="color: #008000">*/</span><span style="color: #000000"><br /> </span><span style="color: #0000ff">function</span><span style="color: #000000"> cleanup() {<br />     </span><span style="color: #0000ff">var</span><span style="color: #000000"> evtObject </span><span style="color: #000000">=</span><span style="color: #000000"> document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">clickme</span><span style="color: #000000">"</span><span style="color: #000000">);<br />     </span><span style="color: #0000ff">if</span><span style="color: #000000"> (evtObject.detachEvent) evtObject.detachEvent(</span><span style="color: #000000">"</span><span style="color: #000000">onclick</span><span style="color: #000000">"</span><span style="color: #000000">, clickMe);<br /> }<br /> <br /> </span><span style="color: #0000ff">function</span><span style="color: #000000"> clickMe() {<br />     alert(</span><span style="color: #000000">"</span><span style="color: #000000">clickMe</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> }</span></div> <br /> <br /> <h2>IE 属?/h2> <p>除了上面的鼠?事g属性,IE 览器还支持下面的属性:</p> <table class="dataintable"> <tbody> <tr> <th style="width: 20%">属?/th> <th>描述</th> </tr> <tr> <td>cancelBubble</td> <td>如果事g句柄想阻止事件传播到包容对象Q必L该属性设?true?/td> </tr> <tr> <td>fromElement</td> <td>对于 mouseover ?mouseout 事gQfromElement 引用Ud鼠标的元素?/td> </tr> <tr> <td>keyCode</td> <td>对于 keypress 事gQ该属性声明了被敲ȝ键生成的 Unicode 字符码。对?keydown ?keyup 事gQ它指定了被敲击的键的虚拟键盘码。虚拟键盘码可能和用的键盘的布局相关?/td> </tr> <tr> <td>offsetX,offsetY</td> <td>发生事g的地点在事g源元素的坐标pȝ中的 x 坐标?y 坐标?/td> </tr> <tr> <td>returnValue</td> <td>如果讄了该属性,它的值比事g句柄的返回g先高。把q个属性设|ؓ fasleQ可以取消发生事件的源元素的默认动作?/td> </tr> <tr> <td>srcElement</td> <td>对于生成事g?Window 对象、Document 对象?Element 对象的引用?/td> </tr> <tr> <td>toElement</td> <td>对于 mouseover ?mouseout 事gQ该属性引用移入鼠标的元素?/td> </tr> <tr> <td>x,y</td> <td>事g发生的位|的 x 坐标?y 坐标Q它们相对于用CSS动态定位的最内层包容元素?/td> </tr> </tbody> </table> <em style="font-size: 8pt">注:HTML DOM Event 对象 http://www.w3school.com.cn/htmldom/dom_obj_event.asp</em><br /> <br /> <br /> <h2>标准 Event 属?/h2> <p>下面列出?2 U?DOM 事g标准定义的属性?/p> <table class="dataintable"> <tbody> <tr> <th style="width: 20%">属?/th> <th>描述</th> <th style="width: 7%">IE</th> <th style="width: 7%">F</th> <th style="width: 7%">O</th> <th style="width: 7%">W3C</th> </tr> <tr> <td><a >bubbles</a></td> <td>q回布尔|指示事g是否是v泡事件类型?/td> <td>No</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a >cancelable</a></td> <td>q回布尔|指示事g是否可拥可取消的默认动作?/td> <td>No</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a >currentTarget</a></td> <td>q回其事件监听器触发该事件的元素?/td> <td>No</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a >eventPhase</a></td> <td>q回事g传播的当前阶Dc?/td> <td> </td> <td> </td> <td> </td> <td>Yes</td> </tr> <tr> <td><a >target</a></td> <td>q回触发此事件的元素Q事件的目标节点Q?/td> <td>No</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a >timeStamp</a></td> <td>q回事g生成的日期和旉?/td> <td>No</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a >type</a></td> <td>q回当前 Event 对象表示的事件的名称?/td> <td>6</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> </tbody> </table> <em style="font-size: 8pt">注:HTML DOM Event 对象 <a >http://www.w3school.com.cn/htmldom/dom_obj_event.asp</a> <hr color="#3366ff" size="1" /> </em><br /> <a id="7" name="7"></a><strong><br /> 7、测?br /> </strong><br /> Q1Q?DOM Level 0Ҏ?document?click事g指定一个事件句柄函数?br /> A1Qdocument.onclick = clickMe;<br /> <br /> <br /> Q2Q?DOM Level 2事g处理机制?documentd click事g句柄?br /> A2Qdocument.addEventListener("click", clickMe, false);<br /> <br /> <br /> Q3Q如果事g处理机制能安全运行所有浏览器Q?br /> A3Q?br />     if (evtObject.addEventListener) evtObject.addEventListener("click", clickMe, false);<br />     else if (evtObject.attachEvent) evtObject.attachEvent("onclick", clickMe);<br />     else if (evtObject.onclick) evtObject.onclick=clickMe;    <br /> <br /> <br /> Q4Q对于ؓ document对象指定?onclick事g句柄Q如何知道是在屏q的什么位|执行了单击操作Q?br /> A4Q?br />      如果使用 DOM Level 0事g处理pȝQ那么将无法使用 window对象?event对象Q也不能其作ؓ参数传给函数?br />      对于 DOM Level 2事g处理模型而言Qevent对象会传给事g句柄函数Q你可以通过 event对象讉K?screenX?screenY属性?br /> <br /> <br /> Q5Q?DOM Level 2事gpȝQ如何阻止从其他元素中冒泡上来的事g?br /> A5Q?br />      IE所支持的方法和l大多数览器所支持的方法有所不同Q因此你需要分别支?IE和其他浏览器。你可以?event对象是否支持 stopPropagationҎ。如果支持,则调用它Q否则就?cancelBubble属性的D|ؓ true?br /> <br /> <br /> Q7Q捕?document对象?keydown事g<br /> A7Q? <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">window.onload </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">function</span><span style="color: #000000">() {    <br />     </span><span style="color: #0000ff">if</span><span style="color: #000000"> (document.addEventListener) document.addEventListener(</span><span style="color: #000000">"</span><span style="color: #000000">keydown</span><span style="color: #000000">"</span><span style="color: #000000">, getKey, </span><span style="color: #0000ff">false</span><span style="color: #000000">);<br />     </span><span style="color: #0000ff">else</span><span style="color: #000000"> </span><span style="color: #0000ff">if</span><span style="color: #000000"> (document.attachEvent) document.attachEvent(</span><span style="color: #000000">"</span><span style="color: #000000">onkeydown</span><span style="color: #000000">"</span><span style="color: #000000">, getKey);<br />     </span><span style="color: #0000ff">else</span><span style="color: #000000"> </span><span style="color: #0000ff">if</span><span style="color: #000000"> (document.onkeydown) document.onkeydown</span><span style="color: #000000">=</span><span style="color: #000000">getKey;    <br /> }<br /> <br /> </span><span style="color: #0000ff">function</span><span style="color: #000000"> getKey(evnt) {<br />     </span><span style="color: #0000ff">var</span><span style="color: #000000"> theEvent </span><span style="color: #000000">=</span><span style="color: #000000"> evnt </span><span style="color: #000000">?</span><span style="color: #000000"> evnt : window.event;<br />     alert(theEvent.which);  </span><span style="color: #008000">//</span><span style="color: #008000">Firefox q回|IE 7提示 undefined</span><span style="color: #008000"><br /> </span><span style="color: #000000">}</span></div> <img src ="http://www.tkk7.com/kiant/aggbug/322189.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kiant/" target="_blank">黄小?/a> 2010-05-29 09:25 <a href="http://www.tkk7.com/kiant/articles/322189.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Javascript学习指南Q第2版)W记(? 对象、函?/title><link>http://www.tkk7.com/kiant/articles/321921.html</link><dc:creator>黄小?/dc:creator><author>黄小?/author><pubDate>Wed, 26 May 2010 08:29:00 GMT</pubDate><guid>http://www.tkk7.com/kiant/articles/321921.html</guid><wfw:comment>http://www.tkk7.com/kiant/comments/321921.html</wfw:comment><comments>http://www.tkk7.com/kiant/articles/321921.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/kiant/comments/commentRss/321921.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kiant/services/trackbacks/321921.html</trackback:ping><description><![CDATA[<br /> <a href="#1">1、字W串基本cd和字W串对象的相互{?br /> </a><a href="#2">2、String对象</a><br /> <a href="#3">3、正则表辑ּ</a><br /> <a href="#4">4、数l?/a><br /> <a href="#5">5、函?/a><br /> <a href="#6">6、匿名函?/a><br /> <a href="#7">7、函数字面量</a><br /> <br /> <br /> <br /> <strong><a id="1" name="1"></a><br /> 1、字W串基本cd和字W串对象的相互{?/strong><br /> <br />      如果创徏的是字符串基本类型,却又以对象的行ؓ讉KQ那?JavaScript会将该基本类型自动{换成对象Q但是{换成?String对象只是一个时变量,q且在属性操作后销毁该对象Q所以这U操作不够有效,多了一ơ{换的q程而已?br /> <br /> var strName = "Shelley"; //字符串基本类?br /> alert(strName.length);  //隐式创徏 String对象Q数g strName相同Qƈ执行 lengthҎ<br /> <hr color="#3366ff" size="1" /> <br /> <strong><a id="2" name="2"></a><br /> 2、String对象</strong><br /> <br /> 本节内容引自QJavaScript String 对象参考手?br /> http://www.w3school.com.cn/js/jsref_obj_string.asp<br /> <br /> var sObject = new String("Sample string");<br /> <br />      字符串是 JavaScript 的一U基本的数据cd。String 对象?length 属性声明了该字W串中的字符数。String cd义了大量操作字符串的ҎQ例如从字符串中提取字符或子Ԍ或者检索字W或子串?br /> <br />      需要注意的是,JavaScript 的字W串是不可变的(immutableQ,String cd义的Ҏ都不能改变字W串的内宏V像 String.toUpperCase() q样的方法,q回的是全新的字W串Q而不是修改原始字W串?br /> <br />      在较早的 Netscape 代码基的 JavaScript 实现中(例如 Firefox 实现中)Q字W串的行为就像只ȝ字符数组。例如,从字W串 s 中提取第三个字符Q可以用 s[2] 代替更加标准?s.charAt(2)。此外,对字W串应用 for/in 循环Ӟ它将枚D字符串中每个字符的数l下标(但要注意QECMAScript 标准规定Q不能枚?length 属性)。因为字W串的数l行Z标准Q所以应该避免用它? <hr color="#3366ff" size="1" />  <br /> <a id="3" name="3"></a><br /> <strong>3、正则表辑ּ</strong><br /> <br />      正则表达式是由字W串所l成的表辑ּQ用于匹配、替换或者查扄定的字符丌Ӏ通过 RegExp对象可以昑ּ地创建正则表辑ּQ?br /> var searchPatten = new RegExp('s+');<br /> <br /> 也可以用文字量方式创徏正则表达式:<br /> var searchPatten = /s+/;<br /> <br /> <strong>testҎ</strong><br /> <br />      testҎ判断以参数传入的字W串是否与正则表辑ּ相匹配?br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">var</span><span style="color: #000000"> re </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">/</span><span style="color: #000000">Javascript rules</span><span style="color: #000000">/</span><span style="color: #000000">i;<br /> </span><span style="color: #008000">/*</span><span style="color: #008000"> var re = new RegExp('s+', 'g');    //对象实例Q第二个参数表示匚w选项 </span><span style="color: #008000">*/</span><span style="color: #000000"><br /> </span><span style="color: #0000ff">var</span><span style="color: #000000"> str </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">Javascript rules</span><span style="color: #000000">"</span><span style="color: #000000">;<br /> </span><span style="color: #0000ff">if</span><span style="color: #000000"> (re.test(str))    document.writeln(</span><span style="color: #000000">"</span><span style="color: #000000">I guess it does rule</span><span style="color: #000000">"</span><span style="color: #000000">);</span></div> <br /> 其中修饰W?br /> i 执行对大写不敏感的匚w?<br /> g 执行全局匚wQ查找所有匹配而非在找到第一个匹配后停止Q?<br /> m 执行多行匚w?<br /> <br /> <strong>execҎ<br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">var</span><span style="color: #000000"> re </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> RegExp(</span><span style="color: #000000">"</span><span style="color: #000000">JS*</span><span style="color: #000000">"</span><span style="color: #000000">, </span><span style="color: #000000">"</span><span style="color: #000000">ig</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> </span><span style="color: #0000ff">var</span><span style="color: #000000"> str </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">cfdsJS *(&YJSjs 888JS</span><span style="color: #000000">"</span><span style="color: #000000">;<br /> </span><span style="color: #0000ff">var</span><span style="color: #000000"> resultArray </span><span style="color: #000000">=</span><span style="color: #000000"> re.exec(str);<br /> </span><span style="color: #0000ff">while</span><span style="color: #000000"> (resultArray) {<br />     document.writeln(resultArray[</span><span style="color: #000000">0</span><span style="color: #000000">]);<br />     document.writeln(</span><span style="color: #000000">"</span><span style="color: #000000">next match starts at </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> re.lastIndex </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000"><br /></span><span style="color: #000000">"</span><span style="color: #000000">);<br />     <br />     resultArray </span><span style="color: #000000">=</span><span style="color: #000000"> re.exec(str);<br /> }<br /> <br /> </span><span style="color: #008000">/*</span><span style="color: #008000"><br /> ׃讄选项 gQRegExp中的 lastIndex属性会讄Z一ơ匹配的位置Q所以每?nbsp;exec调用都会查找下一个匹配。该CZ中d扑ֈ4ơ匹配,当没有匹配时Q将会返回的数值是I?nbsp;nullQ当数组为空值时循环自动l束?nbsp;<br /> <br /> 输出Q?br /> JS next match starts at 6<br /> JS next match starts at 13<br /> js next match starts at 15<br /> JS next match starts at 21<br /> <br /> </span><span style="color: #008000">*/</span></div> <br /> </strong>execҎ返回一个数l,但是数组q不是所有匹配项Q而是当前匚w和所有带圆括L子字W串。如果在表达式中使用圆括号引用正则表辑ּ的某部分Q那么匹配的时候,q些括号所匚w的字W串也会体现在返回的数组中?br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">var</span><span style="color: #000000"> re </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">/</span><span style="color: #000000">(ds)</span><span style="color: #000000">+</span><span style="color: #000000">(j</span><span style="color: #000000">+</span><span style="color: #000000">s)</span><span style="color: #000000">/</span><span style="color: #000000">ig;<br /> </span><span style="color: #0000ff">var</span><span style="color: #000000"> str </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">cfdsJS *(&dsjjjsYJSjs 888dsdsJS</span><span style="color: #000000">"</span><span style="color: #000000">;<br /> </span><span style="color: #0000ff">var</span><span style="color: #000000"> resultArray </span><span style="color: #000000">=</span><span style="color: #000000"> re.exec(str);<br /> </span><span style="color: #0000ff">while</span><span style="color: #000000"> (resultArray) {<br />     document.writeln(resultArray[</span><span style="color: #000000">0</span><span style="color: #000000">]);<br />     document.writeln(</span><span style="color: #000000">"</span><span style="color: #000000">next match starts at </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> re.lastIndex </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000"><br /></span><span style="color: #000000">"</span><span style="color: #000000">);<br />     </span><span style="color: #0000ff">for</span><span style="color: #000000"> (</span><span style="color: #0000ff">var</span><span style="color: #000000"> i</span><span style="color: #000000">=</span><span style="color: #000000">1</span><span style="color: #000000">; i</span><span style="color: #000000"><</span><span style="color: #000000">resultArray.length; i</span><span style="color: #000000">++</span><span style="color: #000000">)<br />     {<br />         document.writeln(</span><span style="color: #000000">"</span><span style="color: #000000">substring of </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> resultArray[i] </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000"><br /></span><span style="color: #000000">"</span><span style="color: #000000">);<br />     }<br />     document.writeln(</span><span style="color: #000000">"</span><span style="color: #000000"><br /></span><span style="color: #000000">"</span><span style="color: #000000">)<br />     <br />     resultArray </span><span style="color: #000000">=</span><span style="color: #000000"> re.exec(str);<br /> }<br /> <br /> </span><span style="color: #008000">/*</span><span style="color: #008000"><br /> <br /> 输出Q?br /> dsJS next match starts at 6<br /> substring of ds<br /> substring of JS<br /> <br /> dsjjjs next match starts at 16<br /> substring of ds<br /> substring of jjjs<br /> <br /> dsdsJS next match starts at 31<br /> substring of ds<br /> substring of JS<br /> <br /> </span><span style="color: #008000">*/</span></div> <br /> 支持正则表达式的 String 对象的方?br /> search 索与正则表达式相匚w的倹{?<br /> match 扑ֈ一个或多个正则表达式的匚w?<br /> replace 替换与正则表辑ּ匚w的子丌Ӏ?br /> split 把字W串分割为字W串数组?br />  <br /> <br /> 参考:JavaScript RegExp 对象参考手?br /> <a >http://www.w3school.com.cn/js/jsref_obj_regexp.asp</a> <hr color="#3366ff" size="1" /> <br /> <strong><a id="4" name="4"></a><br /> 4、数l?/strong><br /> <br />      数组不一定是一l的Q在 JavaScript中管理多l数l的Ҏ是ؓ每个数组元素创徏一个新的数l?br /> <br /> var threedPoints = new Array();<br /> threedPoints[0] = new Array(1.2, 3.33, 2.0);<br /> threedPoints[1] = new Array(5.3, 5.5, 5.5);<br /> threedPoints[2] = new Array(6.4, 2.2, 1.9);<br /> var newZPoint = threedPoints[2][2];     //数组以烦引方式访?br /> <br />      数组?concat ?slice都不会改变原有数l,而只是创Z个新的数l以作ؓҎ的返回倹{?br /> <br />      在大多数情况下,数组元素的顺序ƈ不重要,不过也有些需要维护数l元素顺序的场景Q例如队列。数l维护队列的ҎQ?br /> push 元素添加到数组后面<br /> unshift 元素添加到数组最前面<br /> pop U除数组的最后一个元?br /> shift U除W一个元?br /> <br /> 数组的访?br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008000">//</span><span style="color: #008000">通过循环来遍历数l?/span><span style="color: #008000"><br /> </span><span style="color: #0000ff">for</span><span style="color: #000000"> (</span><span style="color: #0000ff">var</span><span style="color: #000000"> i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">; i</span><span style="color: #000000"><</span><span style="color: #000000">threedPoints[</span><span style="color: #000000">0</span><span style="color: #000000">].length; i</span><span style="color: #000000">++</span><span style="color: #000000">){<br />     alert(threedPoints[</span><span style="color: #000000">0</span><span style="color: #000000">][i]);<br /> }<br /> <br /> </span><span style="color: #008000">//</span><span style="color: #008000">使用 for<img alt="" src="http://www.tkk7.com/Images/dot.gif" />in 循环</span><span style="color: #008000"><br /> </span><span style="color: #0000ff">for</span><span style="color: #000000"> (</span><span style="color: #0000ff">var</span><span style="color: #000000"> itemIndex </span><span style="color: #0000ff">in</span><span style="color: #000000"> threedPoints[</span><span style="color: #000000">0</span><span style="color: #000000">]){<br />     document.writeln(threedPoints[</span><span style="color: #000000">0</span><span style="color: #000000">][itemIndex] </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000"><br /></span><span style="color: #000000">"</span><span style="color: #000000">);<br /> }<br /> </span></div> <br /> Ҏ逗号分隔的字W串方式创徏数组<br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">var</span><span style="color: #000000"> animalString </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">cats,dogs,birds,horse</span><span style="color: #000000">"</span><span style="color: #000000">;<br /> </span><span style="color: #0000ff">var</span><span style="color: #000000"> animalArray </span><span style="color: #000000">=</span><span style="color: #000000"> animalString.split(</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> alert(animalArray[</span><span style="color: #000000">2</span><span style="color: #000000">]);  </span><span style="color: #008000">//</span><span style="color: #008000">alert box display birds</span></div> <br /> <br /> JavaScript Array 对象参考手?br /> <a >http://www.w3school.com.cn/js/jsref_obj_array.asp</a> <hr color="#3366ff" size="1" /> <br /> <a id="5" name="5"></a><br /> <strong>5、函?/strong> <br /> <br />      JavaScript中函数和对象怼Q你可以定义一个函敎ͼ创徏一个新的函敎ͼ甚至输出一个函数。正是因为有了这个功能,你可以将一个函数给一个变量或数组元素Q甚臛_以将其作为参Cl另一个函数调用?br /> <br />      ?JavaScript中有3U创建函数的ҎQ声明式?静态的、动态的/匿名的、字面量式的。在使用它们之前Q理解各U方法的效果是十分重要的?br /> <br />      如果在一个函C需要执行多个Q务,可以考虑这个函数拆分成几个更小的单元,q样做可提高复用性。在实际中,量让函数短、其特定于某个人物、尽量保持通用是应该遵守的规则? <hr color="#3366ff" size="1" />  <br /> <a id="6" name="6"></a><br /> <strong>6、匿名函?br /> </strong><br />      匿名/动态函数对于定义一个在q行时才能确定需求的函数而言是个很好的方法。匿名函数每ơ访问都会解析一ơ。用匿名函数构造器Q?br /> var variable = new Function("param1", "param2",...,"paramn","function body");<br /> <br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008000">/*</span><span style="color: #008000"> <br /> 用户通过 alert对话框来讄定义函数所需的函C及两个参敎ͼ<br /> 然后调用该函敎ͼ<br /> 其生成的结果输出到面上?br /> <br /> 注:FF调试通过QIE7异常<br /> </span><span style="color: #008000">*/</span><span style="color: #000000"><br /> <br /> </span><span style="color: #008000">//</span><span style="color: #008000">提示输入函数体和参数</span><span style="color: #008000"><br /> </span><span style="color: #0000ff">var</span><span style="color: #000000"> func </span><span style="color: #000000">=</span><span style="color: #000000"> prompt(</span><span style="color: #000000">"</span><span style="color: #000000">Enter function body:</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> </span><span style="color: #0000ff">var</span><span style="color: #000000"> x </span><span style="color: #000000">=</span><span style="color: #000000"> prompt(</span><span style="color: #000000">"</span><span style="color: #000000">Enter value of x:</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> </span><span style="color: #0000ff">var</span><span style="color: #000000"> y </span><span style="color: #000000">=</span><span style="color: #000000"> prompt(</span><span style="color: #000000">"</span><span style="color: #000000">Enter value of y:</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> <br /> </span><span style="color: #008000">//</span><span style="color: #008000">调用q个匿名参数</span><span style="color: #008000"><br /> </span><span style="color: #0000ff">var</span><span style="color: #000000"> op </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> Function(</span><span style="color: #000000">"</span><span style="color: #000000">x</span><span style="color: #000000">"</span><span style="color: #000000">, </span><span style="color: #000000">"</span><span style="color: #000000">y</span><span style="color: #000000">"</span><span style="color: #000000">, func);<br /> </span><span style="color: #0000ff">var</span><span style="color: #000000"> theAnswer </span><span style="color: #000000">=</span><span style="color: #000000"> op(x, y);       </span><span style="color: #008000">//</span><span style="color: #008000">function anonymous(x, y) {<img alt="" src="http://www.tkk7.com/Images/dot.gif" />}</span><span style="color: #008000"><br /> </span><span style="color: #000000"><br /> </span><span style="color: #008000">//</span><span style="color: #008000">输出函数执行l果</span><span style="color: #008000"><br /> </span><span style="color: #000000">alert(</span><span style="color: #000000">"</span><span style="color: #000000">Function is: </span><span style="color: #000000">"</span><span style="color: #000000">, func);<br /> alert(</span><span style="color: #000000">"</span><span style="color: #000000">x is: </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> x </span><span style="color: #000000">+</span><span style="color: #000000"> <br />             </span><span style="color: #000000">"</span><span style="color: #000000">; y is: </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> y);<br /> alert(</span><span style="color: #000000">"</span><span style="color: #000000">The answer is: </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> theAnswer);<br /> <br /> <br /> </span><span style="color: #008000">/*</span><span style="color: #008000"><br /> 输入/输出Q?br /> Function is: return x * y;<br /> x is : 33; y is : 11;<br /> The answer is: 363;<br /> </span><span style="color: #008000">*/</span></div> <hr color="#3366ff" size="1" /> <br /> <a id="7" name="7"></a><br /> <strong>7、函数字面量</strong><br /> <br />      函数字面量也U函数表辑ּQ因样创建的函数成辑ּ的一部分Q而不是一个特有类型的语句Q他们像匿名函数一h有定义函数名Uͼ但函数字面量只会被解析一ơ,它是静态的?br /> <br />      当你惛_现如吧一个函C为另一个函数的参数之类的扩展时Q函数字面量的特色就会显C出来?br /> <br /> //第三个参数作ؓ函数来声?br /> function funcObject(x,y,z){<br />     alert(z(x,y));<br /> }<br /> <br /> //W三个参数是一个函?br /> funcObject(3, 4, function(x, y){ return x*y})<br /> <img src ="http://www.tkk7.com/kiant/aggbug/321921.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kiant/" target="_blank">黄小?/a> 2010-05-26 16:29 <a href="http://www.tkk7.com/kiant/articles/321921.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Javascript学习指南Q第2版)W记(一) Script、数据类型和变量、操作符和语?/title><link>http://www.tkk7.com/kiant/articles/321745.html</link><dc:creator>黄小?/dc:creator><author>黄小?/author><pubDate>Mon, 24 May 2010 09:13:00 GMT</pubDate><guid>http://www.tkk7.com/kiant/articles/321745.html</guid><wfw:comment>http://www.tkk7.com/kiant/comments/321745.html</wfw:comment><comments>http://www.tkk7.com/kiant/articles/321745.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/kiant/comments/commentRss/321745.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kiant/services/trackbacks/321745.html</trackback:ping><description><![CDATA[<br /> <a href="#1">1、Script?defer属?br /> </a><a href="#2">2、ؓbodyd脚本<br /> </a><a href="#3">3、CDATA节<br /> </a><a href="#4">4、null和undefined变量</a><br /> <a href="#5">5、羃减JavaScript代码<br /> </a><br /> <br /> <a id="1" name="1"></a><br /> <strong>1、Script?defer属?br /> <br /> </strong>     如果defer属性设|ؓ"defer"Q那么表C脚本不会生成M文档内容Q于是浏览器可以提前处理面的剩余部分,在页面处理结束ƈ做好昄准备时才处理脚本部分。defer属性可以提高页面蝲入的速度Q特别是那些引用了大量的JavaScript代码或者庞大的JavaScriptE序库的面?<br /> <br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000"><</span><span style="color: #000000">script type</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">text/javascript</span><span style="color: #000000">"</span><span style="color: #000000"> defer</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">defer</span><span style="color: #000000">"</span><span style="color: #000000">></span><span style="color: #000000"> <br />  <img alt="" src="http://www.tkk7.com/Images/dot.gif" />no content being generated  <br /> </span><span style="color: #000000"></</span><span style="color: #000000">script</span><span style="color: #000000">></span><span style="color: #000000"> <br /> </span></div> <hr color="#3366ff" size="1" /> <br /> <a id="2" name="2"></a><br /> <strong>2、ؓbodyd脚本<br /> <br /> </strong>     前面我们曄说过Q因为对script元素q行集中理有利于网늚可维护性,所以script元素通常添加在|页上的head元素中。然而,在body元素中添加脚本的原因往往是出于性能的考虑?br /> <br />      因ؓ览器从同一个域名ƈ发蝲入的资源是有限制的,所以,当把脚本d到head元素中时Q首先蝲入的是脚本Q其ơ才是文档的剩余部分。此外,览器可能会延迟面剩余部分的显C,因ؓ脚本中可能会调用document.writeҎ修改document对象。如果JavaScript文g很庞大,那么|页中的囄以及其他重要的信息将会被延迟昄Q这所带来的问题远比可l护性更加重要?br /> <br />      即在script元素中用defer属性也不一定能完全解决该问题,特别是ƈ发资源访问和面昄的限制?br />  <br />      在High Performance Web SitesQ中译版《高性能|站指南》一书中Q作者推荐将script元素攑֜文档的最末尾处,q样|页的其他部分就可以优先载入。大多数复杂|站的开发h员更們֐于这U方法。这U方法带来的负面影响是脚本不Ҏ查找Q网늚可维护性也较差?br />  <br />      那么什么才是最x法呢Q我发现大多数网站ƈ不引用庞大的JavaScriptE序库,在保证较好性能的前提下Q将脚本攑֜head元素中,也确保网可l护性的优势。不q,如果的确需要用庞大的JavaScriptE序库,那么可以考虑脚本放在页面的最末尾处?nbsp;<br /> <br />      不论采用何种ҎQ请保脚本位置的一致性,要么全部攑֜head元素中,要么全部在body元素的最末尾处? <hr color="#3366ff" size="1" /> <br /> <a id="3" name="3"></a><strong>3、CDATA节<br /> </strong> <br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000"><</span><span style="color: #000000">script type</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">text/javascript</span><span style="color: #000000">"</span><span style="color: #000000">></span><span style="color: #000000">  <br /> </span><span style="color: #008000">//</span><span style="color: #008000"><![CDATA[   </span><span style="color: #008000"><br /> </span><span style="color: #000000"><br /> </span><span style="color: #0000ff">function</span><span style="color: #000000"> hello() {<br />    </span><span style="color: #0000ff">var</span><span style="color: #000000"> msg </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">Hello, <em>World!</em></span><span style="color: #000000">"</span><span style="color: #000000">;<br />    document.open();<br />    document.write(msg);<br />    document.close();<br /> }<br /> <br /> </span><span style="color: #008000">//</span><span style="color: #008000">]]></span><span style="color: #008000"><br /> </span><span style="color: #000000"></</span><span style="color: #000000">script</span><span style="color: #000000">></span><span style="color: #000000"> </span></div> <br />      之所以用CDATA节Q是因ؓXHTML处理器在解释标记型语a时会识别出所有的开始标{֒l束标签?br />  <br />      在页面文件中通过script元素的src属性引用的JavaScriptQ是XHTML标准所兼容的,q且不要求用CDATA节。如果是嵌入的JavaScript代码Q那么就需要用CDATA节Q特别是包含在body元素中的代码。对于大多数览器而言Q还需要用JavaScript注释W(//Q来隐藏CDATA节Q如CZ1.3所C,否则会出现JavaScript错误?br />  <br />      当然Q保持页面整z的最x式是JavaScript代码从页面中dUdQ改成用链接JavaScript文g的方式?br /> <br />      在本书的大多数示例中QJavaScript代码是直接嵌入在面里的Q这样可以提高代码的可读性且易于查。然而,Mozilla推荐所有嵌入的JavaScript代码都从面中移去,攑֜独立的JavaScript文g中。用独立的JavaScript文gQ可以避免校验以及文本解释错误等问题Q而不用担心页面是以HTMLq是XHTML的方式进行处理?br /> <br /> 提示<br />      使用JavaScript文g往往也能提高|页载入的效率,因ؓ览器会在第一ơ蝲入文件的时候进行缓存,引用相同文g时则会从~存中获取?br /> <hr color="#3366ff" size="1" /> <br /> <a id="4" name="4"></a><br /> <strong>4、null和undefined变量<br /> </strong><br /> null变量是已定义的、gؓnull的变量。以下是一个null变量的示例:<br /> var nullString = null; <br /> <br /> 如果变量已经声明但是q没有初始化Q那么就是undefined变量Q?br /> var undefString; <br /> <br /> 如果声明了变量ƈ且赋予了初始|那么该变量就不是null或undefinedQ?br /> var sValue = ""; <br /> <br />      当你使用JavaScriptE序库时Q或者在一些复杂的代码中,某些变量有可能还没有初始化;如果试在表辑ּ中用这L变量Q那么就有可能得到出乎意料的l果Q通常会导致JavaScript错误。如果不定变量的状态,那么可以在条件表辑ּ中测试该变量Q例如: <br /> if (sValue) ...     // 如果变量是null或undefinedQ那么结果ؓtrueQ否则是false <br /> <br />      在第3章中详l介l条件语句,现在你只需要知道该表达式会判断变量sValue是否已经声明q初始化Q如果已声明q初始化则该表达式的gؓtrueQ否则,该表辑ּ的gؓfalse? <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">if</span><span style="color: #000000"> (unknownVariable)     </span><span style="color: #008000">//</span><span style="color: #008000"> falseQ变量没有声明或赋?nbsp; </span><span style="color: #008000"><br /> </span><span style="color: #0000ff">if</span><span style="color: #000000"> (undefinedString)     </span><span style="color: #008000">//</span><span style="color: #008000"> falseQ变量没有赋?nbsp; </span><span style="color: #008000"><br /> </span><span style="color: #0000ff">if</span><span style="color: #000000"> (nullString)           </span><span style="color: #008000">//</span><span style="color: #008000"> falseQ变量已l声明ƈ且赋|但是所赋的值是null  </span><span style="color: #008000"><br /> </span><span style="color: #0000ff">if</span><span style="color: #000000"> (sValue)                </span><span style="color: #008000">//</span><span style="color: #008000"> trueQ变量已l声明ƈ且赋|包括I字W串Q?nbsp;使用null关键字,可以判断数值是否ؓnullQ?/span></div> <br /> if (sValue == null) <br />      在JavaScript中,即变量已经声明Q但只要q没有初始化是undefined变量。如果变量已l声明ƈ初始化,那么变量׃是null或undefined。然而,在该CZ中它是一个全局变量Q正如之前的章节所qͼ没有以var关键字声明的变量可能会引起各U各L问题?br /> <hr color="#3366ff" size="1" />   <br /> <a id="5" name="5"></a><br /> <strong>5、羃减JavaScript代码<br /> </strong><br />      I格能够提高代码的可L,但同时也会增加文件的大小。通常情况下,q没什么媄响,因ؓ大多数JavaScript文g都非常小。然而,对于某些大型Ajax应用Q或者复杂的JavaScriptE序库来_太大的JavaScript文g会媄响蝲入JavaScript的速度?br />  <br />      如果要尽可能压羃JavaScript文gQ那么可以选用一些免费的工具Q例如Dean Edward的PackerQhttp://dean.edwards.name/packer/Q,它能够在U压~JavaScript代码。或者用Wikipedia?minify"条目Qhttp://en.wikipedia.org/wiki/MinifyQ中所列D的工Pq些工具可以在桌面或者服务器上用?br />  <br />      另一cdh用来保护JavaScript代码版权的。这些工具不仅仅会压~JavaScript代码Q甚臌会对代码q行加密Q从而代码难以阅读? <img src ="http://www.tkk7.com/kiant/aggbug/321745.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kiant/" target="_blank">黄小?/a> 2010-05-24 17:13 <a href="http://www.tkk7.com/kiant/articles/321745.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>各浏览器中javascript兼容性问?/title><link>http://www.tkk7.com/kiant/articles/320537.html</link><dc:creator>黄小?/dc:creator><author>黄小?/author><pubDate>Mon, 10 May 2010 16:10:00 GMT</pubDate><guid>http://www.tkk7.com/kiant/articles/320537.html</guid><wfw:comment>http://www.tkk7.com/kiant/comments/320537.html</wfw:comment><comments>http://www.tkk7.com/kiant/articles/320537.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/kiant/comments/commentRss/320537.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kiant/services/trackbacks/320537.html</trackback:ping><description><![CDATA[<br /> <a href="#1">1、用setAttribute()改变|页中标{onclick属?br /> </a><a href="#2">2、IE中通过 setAttributed的属?/a><br /> <br /> <br /> <a id="1" name="1"></a><br /> <strong>1、用setAttribute()改变|页中标{onclick属?/strong> *p1<br /> <br />       setAttribute讄style和onclickq些属性在IE中是行不通的? <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000"><</span><span style="color: #000000">script type</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">text/javascript</span><span style="color: #000000">"</span><span style="color: #000000">></span><span style="color: #000000"><br />     </span><span style="color: #0000ff">function</span><span style="color: #000000"> cancleEvent()<br />     {<br />         document.getElementById('a').setAttribute(</span><span style="color: #000000">"</span><span style="color: #000000">onclick</span><span style="color: #000000">"</span><span style="color: #000000">,'');<br />         document.getElementById('g').innerHTML</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">取消事gQ?/span><span style="color: #000000">"</span><span style="color: #000000">;<br />     }<br /> <br />     </span><span style="color: #0000ff">function</span><span style="color: #000000"> setEvent()<br />     {<br />         document.getElementById('a').setAttribute(</span><span style="color: #000000">"</span><span style="color: #000000">onclick</span><span style="color: #000000">"</span><span style="color: #000000">,'alert(</span><span style="color: #000000">"</span><span style="color: #000000">你好Q?/span><span style="color: #000000">"</span><span style="color: #000000">)');</span><span style="color: #008000">//</span><span style="color: #008000">firefox</span><span style="color: #000000">    <br />         document.getElementById('a').onclick</span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">function</span><span style="color: #000000"> () { alert(</span><span style="color: #000000">"</span><span style="color: #000000">This is a test!</span><span style="color: #000000">"</span><span style="color: #000000">); }</span><span style="color: #008000">//</span><span style="color: #008000">IE firefox也有作用,但是使用firebug调试看不C改后的效果,使用上面的方法可以看到?/span><span style="color: #000000">    <br />         document.getElementById('Div1').innerHTML</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">讄事gQ?/span><span style="color: #000000">"</span><span style="color: #000000">;<br />     }<br /> </span><span style="color: #000000"></</span><span style="color: #000000">script</span><span style="color: #000000">></span></div> <br /> 注:<br /> *p1Q用setAttribute()改变|页中标{onclick属?nbsp;   <a >http://blog.csdn.net/Cnami/archive/2008/05/27/2486516.aspx</a><br /> <hr color="#3366ff" size="2" /> <br /> <a id="2" name="2"></a><br /> <strong>2、IE中通过 setAttributed的属?/strong> *p2<br /> <br />       IE下setAttribute讄元素的对象、集合和事g属性都只当成普通属性,起不到原有的作用Q但可以直接q行赋值操作?br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000"><</span><span style="color: #000000">script language</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">javascript</span><span style="color: #000000">"</span><span style="color: #000000"> type</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">text/javascript</span><span style="color: #000000">"</span><span style="color: #000000">></span><span style="color: #000000"><br /> </span><span style="color: #000000"><!--</span><span style="color: #000000"><br /> </span><span style="color: #0000ff">function</span><span style="color: #000000"> init() {<br />     </span><span style="color: #0000ff">var</span><span style="color: #000000"> obj </span><span style="color: #000000">=</span><span style="color: #000000"> document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">btn</span><span style="color: #000000">"</span><span style="color: #000000">);<br />     obj.onclick</span><span style="color: #000000">=</span><span style="color: #000000">changeValue;<br />     obj.style.background</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">#CC6600</span><span style="color: #000000">"</span><span style="color: #000000">;<br /> }<br /> </span><span style="color: #0000ff">function</span><span style="color: #000000"> changeValue() {<br />     document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">txt</span><span style="color: #000000">"</span><span style="color: #000000">).value </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">New value!</span><span style="color: #000000">"</span><span style="color: #000000">;<br /> }<br /> </span><span style="color: #000000">--></span><span style="color: #000000"><br /> </span><span style="color: #000000"></</span><span style="color: #000000">script</span><span style="color: #000000">></span></div> <br /> 注:<br /> *p2Q[求助]通过 setAttribute d的属性在 IE 下不被实玎ͼ <a >http://bbs.blueidea.com/viewthread.php?tid=2290521</a><br /> <hr color="#3366ff" size="2" /> <br /> <br /> <img src ="http://www.tkk7.com/kiant/aggbug/320537.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kiant/" target="_blank">黄小?/a> 2010-05-11 00:10 <a href="http://www.tkk7.com/kiant/articles/320537.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript 脚本攉、ؕ?/title><link>http://www.tkk7.com/kiant/articles/283308.html</link><dc:creator>黄小?/dc:creator><author>黄小?/author><pubDate>Fri, 23 Apr 2010 10:13:00 GMT</pubDate><guid>http://www.tkk7.com/kiant/articles/283308.html</guid><wfw:comment>http://www.tkk7.com/kiant/comments/283308.html</wfw:comment><comments>http://www.tkk7.com/kiant/articles/283308.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.tkk7.com/kiant/comments/commentRss/283308.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kiant/services/trackbacks/283308.html</trackback:ping><description><![CDATA[<p><br /> <a target="_blank">源码爱好?层和布局</a> <br /> <br /> 效果:<br /> <a target="_blank">弹出可拖动提C层(模式H口)</a></p> <br /> <br /> <hr color="#999999" size="4" /> [原]解决JS中文q<br /> http://www.cnblogs.com/xjyggd/archive/2009/04/14/1436000.html<br /> <br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">[<strong>原]解决JS中文q <br /> </strong>Ҏ一Q?nbsp;</span><span style="color: #000000"><</span><span style="color: #000000">script src</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">../JS/common.js</span><span style="color: #000000">"</span><span style="color: #000000"> type</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">text/javascript</span><span style="color: #000000">"</span><span style="color: #000000"> charset</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">gb2312</span><span style="color: #000000">"</span><span style="color: #000000">></</span><span style="color: #000000">script</span><span style="color: #000000">> </span><span style="color: #000000">加上charset</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">gb2312</span><span style="color: #000000">"</span><span style="color: #000000">可以了?br /> Ҏ二:把JS文g的编码改成UTF</span><span style="color: #000000">-</span><span style="color: #000000">8</span><span style="color: #000000"> (VS2005的默认编码)<br /> Ҏ三:把asp.net面的输出编码改成gb2312Q页?/span><span style="color: #000000">/</span><span style="color: #000000">web.config都可讄Q?br /> <br /> <strong>Cookies的内容编码格?/strong><br /> Cookies的g可以保存除了“;”以外的标点符受但是不能保存汉字。保存汉字会出现q?nbsp;<br /> 所以对于Cookies中的内容要进行统一的编码和解码。ؓ了在览器端和服务器端都能够q行解码和编码, 所以要l一使用UTF~码格式?nbsp;<br /> 主要是因为javascript中只能用UTF~码格式?nbsp;</span></div> <img src ="http://www.tkk7.com/kiant/aggbug/283308.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kiant/" target="_blank">黄小?/a> 2010-04-23 18:13 <a href="http://www.tkk7.com/kiant/articles/283308.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>创徏TooltipsҎhttp://www.tkk7.com/kiant/articles/317457.html黄小?/dc:creator>黄小?/author>Wed, 21 Apr 2010 04:49:00 GMThttp://www.tkk7.com/kiant/articles/317457.htmlhttp://www.tkk7.com/kiant/comments/317457.htmlhttp://www.tkk7.com/kiant/articles/317457.html#Feedback0http://www.tkk7.com/kiant/comments/commentRss/317457.htmlhttp://www.tkk7.com/kiant/services/trackbacks/317457.htmlQ?br /> 11个出色的创徏Tooltips的方?br /> http://www.qianduan.net/11-excellent-program-to-create-tooltips.html

AjaxCode -- TooltipsQ消息提醒框控g
http://www.open-open.com/ajax/Tooltips.htm


1. Easy CSS Tooltip
http://www.kollermedia.at/archive/2008/03/24/easy-css-tooltip/

 

Here is the 4 line magic (3lines css, 1line html):
/* css tooltip */
a:hover
{
    _background
: Transparent;
}
/*BG color is a must for IE6*/
a.tooltip span
{
    display
: none;
    padding
: 6px 10px;
    text-indent
: 0px;
    line-height
: 18px;
}
a.tooltip:hover span
{
    display
: inline;
    position
: absolute;
    background
: #ffffff;
    border
: 1px solid #cccccc;
    color
: #6c6c6c;
    text-decoration
: none;
}
/* end of css 

Easy <class="tooltip" href="#">Tooltip<span>This is the crazy little Easy Tooltip Text.</span></a>.



2. jtip
http://codylindley.com/blogstuff/js/jtip/






3.





]]>
动态添?删除HTML元素http://www.tkk7.com/kiant/articles/268893.html黄小?/dc:creator>黄小?/author>Mon, 04 May 2009 14:18:00 GMThttp://www.tkk7.com/kiant/articles/268893.htmlhttp://www.tkk7.com/kiant/comments/268893.htmlhttp://www.tkk7.com/kiant/articles/268893.html#Feedback0http://www.tkk7.com/kiant/comments/commentRss/268893.htmlhttp://www.tkk7.com/kiant/services/trackbacks/268893.html 本文   动态删除Html元素(h高手)
<!DOCTYPE   HTML   PUBLIC   "-//W3C//DTD   HTML   4.0   Transitional//EN"   >
<HTML>
<HEAD>
<title>WebForm2</title>
<meta   name="GENERATOR"   Content="Microsoft   Visual   Studio   .NET   7.1">
<meta   name="CODE_LANGUAGE"   Content="C#">
<meta   name="vs_defaultClientScript"   content="JavaScript">
<meta   name="vs_targetSchema"   content="http://schemas.microsoft.com/intellisense/ie5">
<script   language="javascript">   
    
var count= 0 ;   
    
var maxfile = 5;        //最大允许数?/span>
    
    
//增加元素
    function addUpload() {  
        
if(count >= maxfile)    return;        //限制最多maxfile个文件框
        count++
        
        
//每次自增id不同的HTML对象Qƈ附加到容器最?/span>
        var newDiv =  "<div id=divUpload" + count +">"
            
+ " <input id=file" + count + " type=file size=50 name=upload>"
            
+ " <a href=javascript:delUpload('divUpload" + count + "');>删除</a>"
            
+ " </div>";   
          document.getElementById(
"uploadContent").insertAdjacentHTML("beforeEnd", newDiv);     
    }
   
    
    
//删除指定元素
    function delUpload(diva) {  
        count
--
        document.getElementById(diva).parentNode.removeChild(document.getElementById(diva));   
    }
   
    
  
</script>
</HEAD>
<body   MS_POSITIONING="GridLayout">
<form   id="Form1"   method="post"   runat="server"   enctype="multipart/form-data">
  
<div>
    
<table>
      
<tr>
        
<td   id="tdRrmove"   width="2000">
        
        
<!--承接整个file文g框的HTML容器-->
        
<div id="uploadContent">
            
<!--默认的file文g?br />             <div id=div1><input id=file1 type=file size=50 name=upload></div>-->
        
</div>
        
        
</td>
      
</tr>
    
</table>
  
</div>
  
<href="javascript:addUpload()">d附g</a>
  
<br/>
  
<br/>
</form>
</body>
</HTML>


]]>
Ajax 寚w面元素的操作http://www.tkk7.com/kiant/articles/267529.html黄小?/dc:creator>黄小?/author>Sat, 25 Apr 2009 15:18:00 GMThttp://www.tkk7.com/kiant/articles/267529.htmlhttp://www.tkk7.com/kiant/comments/267529.htmlhttp://www.tkk7.com/kiant/articles/267529.html#Feedback0http://www.tkk7.com/kiant/comments/commentRss/267529.htmlhttp://www.tkk7.com/kiant/services/trackbacks/267529.html JavaScript的Table表格对象
DOM操作表格对象——tableҎ
javascript 取table中内?/a>
Title

<script language="javascript">
 var str;
</script>

取值方?br />    var value==window.table1.rows.item(0).cells.item(0).innerText;

该行W?列的?br /> onMouseDown="str=this.cells.item(0).innerText"

q可以取鼠标所在列的?br /> <td onMouseDown="str=this.innerText">2??lt;/td> 




CSS+JS实现鼠标l过改变表单背景?/a>
JS解决IE 6不支?hover伪类的简单方?br />
css2中规定,:hover伪类可以应用在全部元素上Q而ie6只支?lt;a>的伪c,因此对于ie6需要用jsQ而ie7/ff/op/sa直接定义:hover卛_?br />



]]>
Ajax 开发中遇到的ؕ码问?/title><link>http://www.tkk7.com/kiant/articles/267526.html</link><dc:creator>黄小?/dc:creator><author>黄小?/author><pubDate>Sat, 25 Apr 2009 14:49:00 GMT</pubDate><guid>http://www.tkk7.com/kiant/articles/267526.html</guid><wfw:comment>http://www.tkk7.com/kiant/comments/267526.html</wfw:comment><comments>http://www.tkk7.com/kiant/articles/267526.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/kiant/comments/commentRss/267526.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kiant/services/trackbacks/267526.html</trackback:ping><description><![CDATA[<p><br /> <a href="http://www.tkk7.com/eamoi/archive/2005/12/05/22516.html#Post" target="_blank">Ajax开发过E中提交获取数据的ؕ码问?/a></p> <fieldset><legend>摘录</legend> <p># re: Ajax开发过E中提交获取数据的ؕ码问?2006-09-06 15:32 | 乌鸦在黑夜里?/p> <p>实际上所有的问题都来自编码的不统一Q?<br /> 1、HTTP/POST方式在缺省情况下Q采用的?#8220;x-www-form-urlencoded”q行~码Q它和JavaScript里面的encodeURI所L作用是一LQ?<br /> 2、经q这L码的内容Q到辑֐台时Q其中的字符都是UTF-8~码格式的; <br /> 3、如果你的Servlet/JSP指定输出使用的Content-Type是UTF-8Q恭喜你Q你不需要对q些Parametersq行特别的编码、解码操作,它一定是正常的; <br /> 4、否则你需要对q些parameterq行解、编码操作,例如你的面是GBK~码Q那么你需要这么写Q?<br /> String sPara = new String(request.getParamter("test").getBytes("iso-8859-1"),"GBK"); <br /> 采用gb2312~码的也可以采用GBK~码Q?<br /> 5、如果你是在eclipse中进行工作,h意你的Servlet和JSP文g的属性,其中的编码必dcontent-type中设|的一P否则javac会对你的文gq行错误的编码,q时候的字节码文件本w的字符串就是错误的Q输Z不顶用; <br /> 6、最后做一个ȝQ?<br /> 6.1、servlet/JSP文g本n的编码必dcontent-type输出的一_否则需要加入额外的~码、解码步骤; <br /> 6.2、HTTP/POST方式和encodeURI方式传入的编码都是UTF-8的; <br /> 6.3、普通的window.open(...)Q也是HTTP/GET方式Q其传入的编码是和运行script的页面编码一致的Q?<br /> 6.4、后台解码必通过iso-8859-1q行解码Q再使用你的目标~码q行~码Q?<br /> 6.5、所有的问题基本上可以得到解冟?/p> <p>  回复  更多评论</p> </fieldset> <p><br /> <br />  </p> <hr /> 解决AJAX的ؕ码,可以?escape()函数的呀?<br /> escape Ҏ不能够用来对l一资源标示?(URI) q行~码。对其编码应使用 encodeURI 和encodeURIComponent Ҏ? <p> </p> <p> </p> <p><br /> <hr /> 在asp中解决ؕ码问题只需要在服务器端加上<%Response.ContentType = "text/html;charset=GB2312"%> <p> </p> <img src ="http://www.tkk7.com/kiant/aggbug/267526.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kiant/" target="_blank">黄小?/a> 2009-04-25 22:49 <a href="http://www.tkk7.com/kiant/articles/267526.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于手写 Ajaxhttp://www.tkk7.com/kiant/articles/261285.html黄小?/dc:creator>黄小?/author>Sun, 22 Mar 2009 01:50:00 GMThttp://www.tkk7.com/kiant/articles/261285.htmlhttp://www.tkk7.com/kiant/comments/261285.htmlhttp://www.tkk7.com/kiant/articles/261285.html#Feedback0http://www.tkk7.com/kiant/comments/commentRss/261285.htmlhttp://www.tkk7.com/kiant/services/trackbacks/261285.html  function createHttpRequest(){
   var httprequest=false;
   if (window.XMLHttpRequest)
   { // if Mozilla, Safari etc
     httprequest=new XMLHttpRequest();
     if (httprequest.overrideMimeType)
       httprequest.overrideMimeType('text/xml');
    }
    else if (window.ActiveXObject)
    { // if IE
      try {
        httprequest=new ActiveXObject("Msxml2.XMLHTTP");
      }
      catch (e){
        try{
           httprequest=new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (e){}
      }
    }
    return httprequest;
 }
 
 
function createXml(str){
if(document.all){
 var xmlDom=new ActiveXObject("Microsoft.XMLDOM")
 xmlDom.loadXML(str)
 return xmlDom
}
else
 return new DOMParser().parseFromString(str, "text/xml")
}

 

 

  function showSchedule(sid,f){
   var url = "../schedule.do?operate=toFindById";
   var postStr = "uid=" + encodeURI(sid);
       
    //IE览器关于频J传送数据初始化的问?br />    httpRequest.open("POST", url, true);
   httpRequest.onreadystatechange = function(){
    if(httpRequest.readyState == 4)
     if(httpRequest.status == 200){
      var xml = createXml(httpRequest.responseText);
      var item = xml.getElementsByTagName("Schedule")[0]; 
      
      var scheduleId = item.getElementsByTagName("scheduleId")[0].firstChild.nodeValue;
      var title = item.getElementsByTagName("title")[0].firstChild.nodeValue;
      var schContent = item.getElementsByTagName("schContent")[0].firstChild.nodeValue;
      var address = item.getElementsByTagName("address")[0].firstChild.nodeValue;
      var ifPrivate = item.getElementsByTagName("ifPrivate")[0].firstChild.nodeValue;
      var createTime = item.getElementsByTagName("createTime")[0].firstChild.nodeValue;
      var beginTime = item.getElementsByTagName("beginTime")[0].firstChild.nodeValue;
      var endTime = item.getElementsByTagName("endTime")[0].firstChild.nodeValue;
      var meetingId = item.getElementsByTagName("meetingId")[0].firstChild.nodeValue;      

      f.scheduleId.value = scheduleId;
      f.title.value = title;
      f.address.value = address;
      f.meetingId.value = meetingId;
      f.schContent.value = schContent;
      if(ifPrivate == 0)
       f.ifPrivate.checked = true;
      else
       f.ifPrivate.checked = false;
      
      f.beginTime.value = beginTime;
      f.endTime.value = endTime;  
      f.option.value = "doModify";   
     }
   }
   httpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 
   httpRequest.send(postStr);
  }



====================================

dom4j-1.6.1.jar

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

    Document doc = DocumentHelper.createDocument();
    Element node = doc.addElement("Depart");
    
    Element departId = node.addElement("departId");
    departId.setText(item.getDepartId().toString());
    Element branchId = node.addElement("branchId");
    branchId.setText(item.getBranchId().toString());
    Element departName = node.addElement("departName");
    departName.setText(item.getDepartName());
    Element principalUserId = node.addElement("principalUserId");
    principalUserId.setText(item.getPrincipalUserId().toString());
    Element connectTelNo = node.addElement("connectTelNo");
    connectTelNo.setText(item.getConnectTelNo());
    Element connectMobileTelNo = node.addElement("connectMobileTelNo");
    connectMobileTelNo.setText(item.getConnectMobileTelNo());
    Element faxes = node.addElement("faxes");
    faxes.setText(item.getFaxes());
    
    PrintWriter out = response.getWriter();
    out.println(doc.asXML());
    out.flush();
    out.close();


================================

request.setContentType("text/xml");

httpRequest.resoponseXML;

===========================
利用函数格式?POST h参数

 function addParam(paramObj, paramName, paramValue){
  if(paramObj.length > 0)
   paramObj += "&";
  return paramObj + encodeURIComponent(paramName)
   + "=" + encodeURIComponent(paramValue);
 }


=============================================
javascript 里面的遍?br />
for (pop in windowxxxx){
    .....
}



]]>
վ֩ģ壺 ɫɫwww| ƵƷѹۿ99| ߾Ʒһ | Ʒ˿һ| Ƭ߹ۿ| 51ƷƵѹר| ԴWWW| Ʒ޾Ʒ2021| ƵŷƵ| aƬƷþþþþþ | þƷAV鶹Ƭ| þˮav뾫Ʒ鶹 | ˳վ999þþۺ| ɫͼ߲| պƷרַ| vvvv99պƷ| 12345Ƶ| 1000ҹ| þóѲ| ޾ƷպAV| ޸ľƷŮ| ձ޾ƷɫӰԺ| AVһAV| ˳AVվ| ޾Ʒ˳ëƬ | ŮŮŮͬvideo| Ƶվ| þþþþþAv| av벻| AVרƬ߹ۿ | avƬ߹ۿ| ŷպĸwww777| ݺɫۺվɫ| պһ| AVר| ޲122021鶹| Ů˳Ժ˾޸| H߲߹ۿH| ޸Ƶ| ŮƷĻ| ޹Ʒþ|