JavaScript-客戶端編程_第1頁
JavaScript-客戶端編程_第2頁
JavaScript-客戶端編程_第3頁
JavaScript-客戶端編程_第4頁
JavaScript-客戶端編程_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、JavaScript客戶端編程:全局對象Window:客戶端JavaScript的Window對象是全局對象。Window對象還有兩個自我引用的屬性:window和self由于在客戶端JavaScript中Window對象是全局對象,因此所有的全局變量都被定義為該對象的屬性,所以下面的代碼是相同的功能var answer = 42;window.answer = 42;Window對象代表的是一個Web瀏覽器窗口。應用程序中出現(xiàn)的每個窗口都對應一個Window對象??蛻舳说膶ο髮哟魏臀臋n對象模型(DOM)每個Window對象都定義了一個document屬性,該屬性引用與這個窗口關聯(lián)在一起的Do

2、cument對象,location屬性引用與該窗口關聯(lián)的Location對象。當一個Web瀏覽器顯示一個帶幀的文檔,頂層的Window對象的frames數(shù)組包含了代表幀的Window對象的引用,因此在客戶端JavaScript中,表達式document代表的是當前窗口的Document對象,而表達式frames1.document引用的是當前窗口的第二個子幀Document對象Document對象他也有其他對象的屬性。如每個Document對象都有一個forms數(shù)組,他是用來保存文檔中出現(xiàn)的HTML中的Form對象。要引用這些單:window.document.forms0Form對象都有一個

3、elements數(shù)組,該數(shù)組包含了出現(xiàn)在表單中的各種HTML表單元素的對象。window.document.forms0.elements0;表示當前頁面中第一個表單中的第一個表單元素。Window可以調用自己的幾個屬性:window.self window.window window.parent window.top 頂層對象DOM細節(jié)圖注意:最好把JS全部寫在模塊中。也就是獨立的JS文件注意:在XHTML中最好把代碼放在<script><!CDATA放在這里。</script>在HTML標簽中使用<script type=”application/ja

4、vascript”><./script>來做為html嵌入JavaScript代碼不使用text/JavaScript因為JavaScript不是正直的文本<noscript></noscript> 當瀏覽器的JS被禁用了會顯示這里的內容HTML中的事件句柄:onclick:所有類似按鈕的表單元素和標記<a>及<area>都支持該處理程序當用戶點擊標記元素的時候觸發(fā)。如果onclick返回false則瀏覽器不執(zhí)行任何與按鈕或鏈接相關的默認動作。onmousedown onmouseup這兩個事件句柄和onclick非常相似,只不

5、過分別在用戶按下鼠標和釋放鼠標時觸發(fā)。onmouseover onmouseout分別在鼠標指針移動到或移出文檔元素時觸發(fā)這兩個處理程序 onchangeinput select textarea元素支持這個事件句柄,在用戶改變了元素的值的時候或移出元素的焦點時觸發(fā) onload這個事件句柄出現(xiàn)在<body>標記上,當文檔及其外部內容如圖像,完全載入的時候觸發(fā)它。客戶端JavaScript線程模型:核心javascript語言并不包含任何線程機制。所以javascript是單線程的。也就是說當腳本載入和執(zhí)行的時候,文檔解析就停止下來。并且,當事件句柄執(zhí)行的時候,WEB瀏覽器會停止對

6、用戶輸入的響應。單線程是為了更加簡單的腳本而制定的,編寫代碼同時確保兩個事件不會同時運行。這意味著腳本和事件句柄不能運行太長時間,否則會有延遲如果腳本是可能變得無法響應,或崩潰。如果應用程序必須執(zhí)行足夠的計算從而導致顯著的延遲,應該允許文檔在執(zhí)行這個計算之前完全載入,應該確保能夠通知用戶計算正在進行中并且瀏覽器沒有掛起。如果可能將計算分散為離散的子任務,可以使用setTimeout()和setInterval()這樣的方法后臺運行子任務。在載入過程中操作文檔:在onload事件已經(jīng)觸發(fā)以后操作文檔是安全的,并且這也是大多數(shù)javascript程序的做法,它們使用onload句柄觸發(fā)所有的文檔修

7、改。在包含較大的圖像或很多圖像的文檔中,在圖像載入和onload事件觸發(fā)之前,主文檔可以很好地解析。在這種情況下,可能希望在onload事件之前開始操作文檔,一種技術是把操作代碼放在文檔的末尾。IE的技術是把文檔操作代碼放入到一個既有defer屬性又有src屬性的<script>標記中。而firfox的技術是把文檔操作代碼為未詳細說明的DOMContentLoaded事件的一個事件句柄。文檔完全載入之前事件句柄能否調用的問題,到目前為止,javascript執(zhí)行模式的討論可以得出結論,所有的事件句柄總是在所有腳本已經(jīng)執(zhí)行以后才觸發(fā)。盡管這通常會發(fā)生,但是也不是任何標準要求的。如果一

8、個很長的或者在一個很慢的網(wǎng)絡連接上載入著,瀏覽器可能部分地提交文檔并且在所有的腳本和onload句柄運行之前就允許用戶開始和它交互(并觸發(fā)事件句柄) 如果這樣的一個事件句柄調用了一個還沒有定義的函數(shù),它將會失敗。同源策略:同源策略是對JavaScript代碼能夠和哪些Web內容交互的一條完整的安全限制。當一個Web頁面使用多個幀包括iframe標記?;蛘叽蜷_其他的瀏覽器窗口的時候,這一策略會發(fā)揮作用。這種情況下,同源策略負責管理一個窗口或幀中的JavaScript代碼和其他窗口或幀的交互。也就是說:一個腳本只能夠讀取和包含這一腳本的文檔來源泉相同的窗口和文檔的屬性。當使用XMLHttpRequ

9、est對象腳本化HTTP的時候,同源策略也發(fā)揮作用。這一對象允許客戶端面的JavaScript代碼來提出任意的HTTP請求,但所針對的WEB服務器只能是載入包含文檔的WEB服務器(也就載入腳本的域名)注意:文檔的來源定義為協(xié)議,主機或者是載入文檔的URL的端口,載入自不同的WEB服務器的文檔具有不同的來源,通過同一主機的不同端口載入的文檔具有不同的來源泉,使用http協(xié)議載入的一個文檔和另一個使用https協(xié)議載入的文檔具有不同的來源,即使它們來自同一個WEB服務器在有的情況下,頂級域中的其他二級域要相互訪問他們的頁面,在默認情況是無法做到的,但是可以使用Document對象的屬性domain

10、,domain默認情況下,保存的是裝載文檔的服務器主機名。如domain屬性的初始值為可以設置為至少要有一個頂級域注意:如果兩個窗口含有的腳本把domain設置成了相同的值,那么這兩個窗口就不再受同源策略的約束,它們可以互相讀取對方的屬性。如一個域一個為裝載進來的文檔中協(xié)作腳本可以把它們的document.domain屬性設置為這樣一來,這些文檔就有了同源性,可以互相讀取屬性注意在客戶端拿到get的內容可以使用:decodeURIComponent(window.location.search.substring()。腳本化瀏覽器窗口:計時器:Window對象的setTimeout()方法:用

11、來安排一個函數(shù)在指定的毫秒數(shù)過去之后運行,setTimeout()返回一個不確定的值,這個值可以傳給clearTimeout()來取消規(guī)劃的函數(shù)的執(zhí)行setInterval()方法:指定的函數(shù)在一個指定的毫秒數(shù)的間隔里重復地調用。setInterval()返回一個不確定的值,這個值可以傳遞給給clearInterval()用來取消規(guī)劃。解析URL:Location對象窗口的location屬性引用的是Location對象,它代表該窗口或幀中當前顯示的文檔的URL。Location對象的href屬性是一個字符串。它包含URL的完整文本,Location對象的toString()方法返回href屬

12、性的值。可以使用location代替location.href當前的對象有屬性protocol 協(xié)議 host主機 pathname路徑 searchfunction getArgs()var args = new Object(); 聲明一個空對象var query = location.search.substring(1); 把get的內容保存到一個變量中var pairs = query.split("&"); 再把當前這個變量中&分為一個數(shù)組for(var i =0;i<pairs.length;i+)var pos = pairsi.ind

13、exOf('='); 拿到后面位置if(pos = -1) continue; 如果等于號位置為1跳過var argname = pairsi.substring(0,pos); 拿到等于號前面的字符串 username=abcdvar value = pairsi.substring(pos+1);拿到等于號后面的字符串value=decodeURIComponent(value); 解碼等于號后面的 字符串a(chǎn)rgsargname = value;放入對象中return args; decodeURIComponent()解碼URI上的一些UNICODE字符 注意在URI拿到

14、的值一定要做這個解碼否則會得到 %10f%123e類似這樣的字符這段代碼是截取 網(wǎng)頁?后面的URI 注意如果直接給location賦一個字符串那么表示跳轉到這個頁面 location=”表示跳到Location對象:Window對象的location屬性和Document對象的location屬性,前者引用一個Location對象,而后者只是一個只讀字符串。并不具有Location對象的任何特性。document.location與document.URL是同義的。大多數(shù)情況下,document.location和location.href是相同的。但是當存在服務器重寫向時,document.

15、location包含的是已經(jīng)裝載的URL,而location.href包含的則是原始請求的文檔URLHistory對象:因為出于安全考慮History內的數(shù)組元素是無法真正的訪問的,可以支持三種方法:back()返回前一個頁面 <forward()返回后一個頁面 >go() 有一個整數(shù)參數(shù),可以在歷史列表中向前(正參數(shù))或向后(負參數(shù))跳過多個頁 (這里的參數(shù)表示跳幾個頁面)使用window.back() 操作幀也可以得到history.back()的效果Window對象中的窗口信息:window.outerWidth 獲得瀏覽器的窗口長window.outerHeight 獲得瀏

16、覽器的窗口寬window.screenX獲得瀏覽器在桌面上的Xwindow.screenY獲得瀏覽器在桌面上的Ywindow.innerWidth 實際顯示網(wǎng)頁內容的瀏覽器窗口寬(除滾動條和工具欄)window.innerHeight實際顯示網(wǎng)頁內容的瀏覽器窗口高 window.pageXOffset 滾動條的X位置 window.pageYOffset 滾動條的Y位置這些屬性全是只讀的。Navigator對象:Window對象的navigator屬性引用的是包含Web瀏覽器總體信息。以前是全來確定瀏覽器是否支持相關的方法和屬性而現(xiàn)在使用測試相關瀏覽器是否支持相關方法和屬性使用if(windo

17、w.addEventListener)類似這樣的方法來測試 Navigator相關屬性:appName:Web瀏覽器的簡單名稱,在IE中就是Microsoft Internet Explorer 在Netscape代碼基礎的Firfox和其他的瀏覽器如Mozilla 和 Netscape都為NetscapeappVersion:瀏覽器的版本號和其他版本信息。應該視為“內部”版本號,因為它不總是與顯示給用戶的版本號一致,如Netscape6以及隨后發(fā)布的Mozilla和Firfox所報告的版本號是5.0另外IE4到IE6的版本號為4.0說明它們與第四代瀏覽器的基準功能兼容userAgent瀏覽器

18、在它的USER-AGENT HTTP頭部中發(fā)送的字符串,這個屬性通常包含appName和appVersion中所有信息。appCodeName瀏覽器的代碼名。Netscape用代碼名“Mozilla”作為一個屬性的值為了兼容IE也采用這種方式platform運行瀏覽器的硬件平臺。 返回為Win32或linux unix判斷瀏覽器的平臺:var browser = version:parseInt(navigator.appVersion),isNetscape:navigator.appName.indexOf('Netscape') != -1,isMicrosoft:nav

19、igator.appName.indexOf('Microsoft') != -1;Window.open(URL,target,新窗口參數(shù),替換窗口)方法有四個可選參數(shù):URL:表示打開的頁面地址target:打開新窗口的名字 這個名為target標記_blank新窗口參數(shù):width=400寬,height=350高,狀態(tài)status=no,可否可調整resizeble=no替換窗口:如果為true那么就替換target這里的字符串的窗口關閉窗口:window.close() 或者window.open()返回的值 來關閉鍵盤焦點和可見性:方法focus()和blur()提

20、供了對窗口的高級控制focus()會請求系統(tǒng)將鍵盤焦點賦予窗口,焦點blur()則會放棄鍵盤焦點。失去焦點窗口大小和位置:注意:判斷一個窗口是否關閉可以使用window.open()返回值中的屬性closed注意這里的窗口必須是指定了width和heightopen(“”,”,”,”width=xxx,height=xxx”)moveTo(X,Y) 移動窗口的坐標位置 絕對位置moveBy() 將窗口上下左右移動resizeTo()和resizeBy() 修改窗口大小寫一個打開關閉窗口最好寫在一個對象中簡單的對話框:alert()向用戶顯示一條消息并等待用戶關閉對話框。confirm()要求用

21、戶點擊一個OK或者Cancel按鈕來確認或取消操作prompt()請求用戶輸入一個字符串注意:這三個方法的用戶體驗不好,因為在彈出對話框的時候,會停止執(zhí)行后面的代碼直到這三個函數(shù)返回為止才會繼續(xù)執(zhí)行代碼。這樣就會產(chǎn)生阻塞。錯誤處理:Window對象的onerror屬性比較特殊,如果給這個屬性賦一個函數(shù),那么只要這個窗口中發(fā)生了JavaScript錯誤。該函數(shù)就會被調用,即它成了窗口的錯誤處理句柄(這是一個比較早的錯誤處理方法,他是 Window對象中的一個方法)特別在IE中IE9以下的版本這個函數(shù)有三個參數(shù),一個是window.onerror = function(自信,文件的URL,錯誤行數(shù)

22、)他還可以返回,返回true表示它通知瀏覽器句柄已經(jīng)處理錯誤,無需其他操作。就是不顯示錯誤信息。window.onerror = function()return true多窗口和多幀:一個窗口中的任何幀都可以使用Window對象的屬性frames parent top屬性來引用其他的幀每個窗口都有frames屬性,這個屬性引用一個Window對象的數(shù)組,其中每個元素代表這個窗口中包含的幀。如果一個窗口都迷彩有任何幀,那么frame數(shù)組就是一個空,frames.length為0。每個窗口含有一個parent屬性,它引用包含這個窗口的Window對象。窗口中的第一個幀就可以引用它的兄弟幀(即第二

23、個幀)parent.frames1如果一個窗口是頂級窗口,而不是幀,那么parent屬性引用的就是這個窗口本身。parent = self一個幀包含在另一個幀中,而后者又包含在頂級窗口中,那么該幀就可以使用parent.parent 引用頂級窗口。 注意:無論一個幀嵌套了幾層,top屬性引用的都是包含它的頂級窗口。 如果一個Window對象代表的是一個頂級窗口,那么它的top屬性引用的就是窗口自身。對于那些頂級窗口的直接子幀(iframe)top就等價于parent.他們之間的關系可以直接使用這里的name表示分幀的名字這樣可以直接返回那個分幀的window對象這樣就可以

24、用來操作他內部的元素?;蛘呤褂胻op.framename top.幀名注意:這樣只要拿到這個分幀返回的window對象那么分幀內的變量也是可以直接訪問的如:頁面1 中 var a = 100parent.頁面1.a 也是可以訪問到空上100的訪問他的方法也是可行的parent.頁面1.f()注意:函數(shù)是在定義他的作用域中執(zhí)行,也就是編寫函數(shù)的那個頁面執(zhí)行。而不是在調用他的它的作用域中執(zhí)行。也就是說 當兩個頁面(執(zhí)行環(huán)境) 如一個函數(shù)內有相同的變量,那么他就是去調用,定義這個函數(shù)的那個頁面中的變量。而不是執(zhí)行這個函數(shù)頁面中的變量。Document腳本化文檔document.write() 將內容

25、寫入頁面中document.open() 創(chuàng)建文檔document.close() 關閉文檔,瀏覽就不能制止它所顯示的文檔裝載動畫。而且瀏覽器可以將寫入的HTML緩存起來,這樣在調用close()顯式地結束文檔之前,緩存輸出不會顯示出來Document屬性:bgColor文檔的背景色,這個屬性對應標記body的bgcolor屬性(已經(jīng)沒用) cookie一個特殊屬性,允許javascript程序續(xù)寫HTTP cookie domain該屬性使處于不同的internet域中的相互信任的WEB服務器在它們的網(wǎng)頁間交互時能協(xié)同放松同源策略安全性限制 lastModified一個字符串,包含文檔的修改

26、日期 location文檔的URL屬性 已經(jīng)沒用 referrer文檔的URL,包含瀏覽器帶到當前文檔的連接 title文檔的標題 URL一個字符串,聲明了裝載文檔的URL,除非發(fā)生了服務器重定向,否則該屬性值與Window對象的location.href一樣技巧:在布署平臺上,可以使用document.referrer來判斷文件是否來自本域。不是來自本域的訪問可以進行跳轉。遺留DOM:文檔對象集合。anchorsanchor 對象的一個數(shù)組,該對象代表文檔中的錨也就是a標簽中的name 也就是返回a標簽的集合appletsApplet對象的一個數(shù)組,該對象代表文檔中的java appletf

27、ormsForm對象的一個數(shù)組,該對象代表文檔中的form元素。每個Form對象有自己的elements集合屬性,其中包含了代表表單中的所包含的表單元素的對象。 imagesImage對象的一個數(shù)組,該對象代表文檔中img元素,Image對象的src屬性是可讀寫的。并且給這個屬性賦一個URL會導致瀏覽器讀取和顯示一個新圖像。linksLink對象的一個數(shù)組,該對象是代表文檔中超文本連接的Link對象。超文本鏈接在HTML中用<a>標記創(chuàng)建的、并且偶爾會用客戶端圖像地圖的<area>標記來創(chuàng)建。一個Link對象的href屬性和<a>標記的href屬性相對應。它

28、保存了該鏈接的URL Link對象也通過protocol hostname pathname等屬性使一個url的不同部分變得可用。 他返回的對象類似Location技巧:可能通過document.froms.表單名name屬性 來得到這個表單對象。如document.forms.userRegFrom 表示獲取頁面中name為userRegFrom的表單還可以document.表單名<form name=”shipping”> <input type=”Text” name=”zipcode” /></form>如果要拿 表單中的input元素 docume

29、nt.shipping.zipcode 這樣就可以拿 到input元素。注意:如果兩個元素的name相同那么使用 document.n 引用的是一個數(shù)組。如果要在表單提交的時候檢查表單中元素的內容,可以在<form name=”myform” onsubmit=”return xxxx()> </form>或者可以在js中這樣寫:document.myform.onsubmit = functionW3C中的DOM:父節(jié)點:直接位于一個節(jié)點之上的節(jié)點被叫為父節(jié)點parent子節(jié)點:直接位于節(jié)點下層的節(jié)點是該節(jié)點的子節(jié)點children兄弟節(jié)點:位于同一層的節(jié)點叫做兄弟節(jié)

30、點sibling后代節(jié)點:一個節(jié)點的下一個層次的節(jié)點集合是那個節(jié)點的后代descendant祖先節(jié)點:一個節(jié)點的父節(jié)點,祖父節(jié)點及其他所有位于它之上的節(jié)點都是那個 節(jié)點的祖先ancestor節(jié)點:每個Node對象都有一個nodeType屬性,它指定了節(jié)點是什么類型的。如一個節(jié)點的nodeType為ELEMENT_NODE那么他就量個Element對象并且可以使用Element接口為定義的所有方法和屬性。常見的nodeType值接口node Type常量nodeType值ElementNode.ELEMENT_NODE1TextNode.TEXT_NODE3DocumentNode.DOCUME

31、NT.NODE9CommentNode.COMMENT_NODE8DocumentFragmentNode.DOCUMENT_FRAGMENT_NODE 11AttrNode.ATTRIBUTE_NODE2DOM樹根部的Node是一個Document對象,這個對象的documentElement屬性引用了一個Element對象,它代表了文檔的根元素。對于HTML文檔,這是<html>標記。它在文檔中可以顯式或隱式的。核心DOM API的一部分類層級 不同的接口有不同的方法。如HTMLInputElement接口定義了focus()和blur()方法而向普通的Element對象有 s

32、etAttribute()和getAttribute()方法設置和獲取屬性HTMLInputElement接口中的方法:focus() 獲得焦點blur() 失去焦點HTMLFormElement Form標簽中的方法:submit() 提交方法reset() 重置表單方法獲得屬性:getAttribute(屬性)設置屬性setAttribute(屬性,值)移除屬性removeAttribute(屬性)Document對象的implementaion屬性引用一個DOMImplementation對象,它定義了名為hasFeature()的方法。用這個方法可以查詢一個實現(xiàn)是否支持特定的DOM特性

33、或模塊例子:document.implementation && document.implementation.hasFeature &&document.implementation.hasFeature(html,1.0)是否支持這些用來判斷是否支持某個接口document.implementation.hasFeature(特性名字,版本號)如果返回true表示支持節(jié)點:document.documentElement 獲得所有HTML中的節(jié)點childrens = node.childNodes 獲得所有子節(jié)點childrens.item(0) 獲得第

34、一個子節(jié)點firstChild獲得第一個子節(jié)點 Text節(jié)點拿到內部內容可以使用他的屬性text.data nodeValue也可以拿 到Text節(jié)點的內容注意:NodeList的元素,不是一個真正的數(shù)組,他沒有sort()方法NodeList中的屬性:firstChild 獲得第一個子節(jié)點lastChild獲得最后一個節(jié)點nextSibling 獲得兄弟下一個兄弟節(jié)點previousSibling 獲得前一個兄弟節(jié)點parentNode 父節(jié)點注意:在查找節(jié)點中的子節(jié)點的時候,第一個Child是一個空的字符串所以要n.firstChild.nextSibling.nextSibling 才能

35、拿到第二個節(jié)點可以進行過濾if(/s+$/.test(m.nodeValue) 開頭和結尾都為空的話直接不添加進數(shù)組遍歷父節(jié)點中的所有子節(jié)點中的text節(jié)點:function getText(n)var strings = ; / /用來保存text節(jié)點的字符串數(shù)組getStrings(n,strings); /用來遍歷字符串的內部函數(shù)return strings.join(“”); 以字符串的形式返回function getStrings(n,strings)if(n.nodeType = 3) 判斷傳進來的節(jié)點的類型是否為text類型如果為text直接添加他的nodeValue值到數(shù)組中s

36、trings.push(n.nodeValue);else if(n.nodeType = 1)/如果還是一個節(jié)點那么就開遍歷這個節(jié)點中的節(jié)點直接找到text節(jié)點for(var m=n.firstChild;m!=null;m=m.nextSibling)/拿到第一個節(jié)點,只要他不等于null,就把m等于他的下一個節(jié)點/過濾空字符串if(/s+$/.test(m.nodeValue) continue;getStrings(m,strings);/如果還是一個節(jié)點那么遞歸。在文檔中查找元素:document.docuementElement屬性引用了作為文檔的根元素<html>標記

37、document.body 引用了<body>標記如果上面的屬性不存在可以這樣引用document.getElementsTagName(body)0document.getElementsTagName()獲得一個HTML元素列表(數(shù)組)document.getElementsByName(name)獲得一個HTML元素他的name屬性一定為name(返回數(shù)組 )一個簡單的通過id 或者 classname 或者tagname來找元素function getElements(tagname,classname,id)/如果傳入ID的話那么通過id去找這個tagnamevar ro

38、ot;var elementsTag = ;if(!id)root = document;/如果是一個字符串那么就去找相關的IDelse if(typeof id = 'string') root = document.getElementById(id);/如果相關的ID的classname等于傳入的classname直接返回這個元素if(root.className = classname && classname != null) return root;/如果沒有傳入id那么這樣得到一個tag列表 也沒轉classnamevar tagnames = r

39、oot.getElementsByTagName(tagname);if(!classname) return tagnames;return isMember(classname,tagnames)function isMember(classname,tagnames)/用來保存被匹配到的元素var elementsArray = ;/遍歷數(shù)組tagnames中的所有元素直接找到className等于classnamefor(var i=0;i<tagnames.length;i+)if(tagnamesi.className = classname && !(/s+

40、$/.test(tagnamesi.nodeValue)elementsArray.push(tagnamesi);return elementsArray;按節(jié)點的內容來排序(數(shù)字)function sosrtkids(a)/var e;if(typeof a = 'string') e = document.getElementById(a);var kids = ;for(var x = e.firstChild;x!=null;x=x.nextSibling)if(x.nodeType = 1)/if(/s+$/.test(x.nodeValue) continue;kids.push(x);/從大到小進行排序kids.sort(function(n,m)var s = parseInt(n.firstChild.nodeValue);var t = parseInt(m.firstChild.nodeValue);return -(s-t);

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論