?? javascr4.html
字號:
<html><head><title>JavaScript 第 四 集</title><script language="JavaScript"><!-- Hidefunction WinOpen(url) { msg=open(url,"DisplayWindow","toolbar=no,directories=no,menubar=no,status=yes");}function statbar(txt) { window.status = txt;}function moveover(txt) { window.status = txt; setTimeout("erase()",1000);}function erase() { window.status="";}function stat(txt) { window.status = txt; setTimeout("erase()",1500);}// --></script></head><BODY bgcolor="ffffff" link=#ff0000 vlink=#4444dd alink=#9999dd><center><a name="status"></a><img src="java.gif" ><br><font size=+2 color=#FF0000><br>第四集</center></a></font><p><HR WIDTH="80%" ALIGN="center" SIZE="2"><p><br><br><CENTER><TABLE><TR><TD><font size=+1>這章我將告訴您如何在狀態列 (statusbar) (也就是您瀏覽器最下方顯示 URLs 的那一行) 顯示文字,并且將教您 '跑馬燈' (以下簡稱 scroller ) 的工作原理。雖然以 JavaScript 完成的 scroller 目前仍有些問題 (稍後會提到問題在哪兒?),但我還是告訴您它是如何寫成的。<br><br>首先,如何將文字填入 statusbar 呢?下述語法將告訴您如何做到這項功能: (按下按鈕後請注視 statusbar 的變化)<p><form><input type="button" name="look" value="寫入文字" onclick="statbar('嗨 ! 這就是狀態列 (statusbar) !');"><input type="button" name="erase" value="清除文字" onclick="statbar('');"></form>很新奇吧! 請看看原始碼 :<p><pre><html><head><script language="JavaScript"><!-- Hidefunction statbar(txt) { window.status = txt;}// --></script></head><body><form><input type="button" name="look" value="寫入文字" onclick="statbar('嗨 ! 這就是狀態列 (statusbar) !');"><input type="button" name="erase" value="清除文字" onclick="statbar('');"></form></body></html></pre><p>我制作了兩個都會呼叫 statbar(txt) 函式 (function) 的按鈕。當此函式被呼叫後,字串經由括弧中的變數 txt 傳給 statbar(txt)。 (不一定要用 <i>txt</i>,用別的變數名也可以)。當電腦執行到 <form> tag 時, 一旦按下按鈕就會呼叫 statbar(txt)。但是電腦并沒有馬上將 <i>txt</i> 的內容寫在 statusbar,只是將欲顯示的字串存入 <i>txt</i>。換句話說,藉由呼叫函式,只是讓變數 txt 得到一個值。因此當您按下 '寫入文字' 這個按鈕後,會呼叫 statbar(txt) 而且 '嗨 ! 這就是狀態列 (statusbar) !' 這個字串會存入 txt 中。咻 ! 講了這麼多只是想告訴您這種寫法可預留一些彈性。什麼彈性呢?就是您可重復使用 txt 這個變數。您看看第二個按鈕,它也是呼叫相同的函式。若您不利用一個變數來傳遞字串的話,就必須寫兩個不同的函式了。<br><br>那麼 statbar(txt) 到底做了些什麼?其實沒什麼,只是將 txt 的內容寫入變數 window.status中。這是由 <i>window.status = txt;</i> 做的。另外若想消除文字,只需送一個空字串 ('') 給 statusbar。請注意,因為在 onClick 中我們已經使用雙引號 " ,所以這里必須用單引號 ' 。這是為了讓瀏覽器辨認哪兩個引號是一對的,因此您必需雙引號和單引號交替使用。<p><a name="erase"></a>由此份簡介文件第二章您已學過 onMouseOver 的特性了 :<br><a href="tpage.html" onMouseOver="window.status='Just another stupid link...'; return true"><br>您可能會對一件事感到厭煩。那就是當 mouse 的指標已從 link 移開了,但是 statusbar 中的文字還留在那 !沒關系,我教您一個解決的辦法。利用上面教您如何消除 statusbar 中文字的方法,我們來寫一個小函式。但是如何偵測出 mouse 的指標已從 link 移開并進而呼叫消除文字的函式呢?偵測 mouse指標是否已從 link 移出的功能目前還無法達到,但可用 "計時器" 來暫時解決此問題。<p>試試將 mouse 移到此 <a href="dontclck.html" onMouseOver="moveover('瞬間即逝 !'); return true;">link</a> 上看看 statusbar 的變化,但請不要按它。<p>怎麼樣?很棒吧!看看下面的原始碼您就知到這東西很簡單。<p><pre><html><head><script language="JavaScript"><!-- Hidefunction moveover(txt) { window.status = txt; setTimeout("erase()",1000);}function erase() { window.status="";}// --></script></head><body><a href="dontclck.html" onMouseOver="moveover('瞬間即逝 !');return true;">link</a></body></html></pre><p>這 script 的許多部份相信您已了解。 moveover(txt) 其實和先前的 statbar(txt) 差不多。erase()也和先前所討論的相同。在 HTML 網頁中的 <body> tag 里我們加入一個具有 onMouseOver 功能之 link。當 mouse 指標移至 "link" 上就會呼叫 moveover(txt),并且利用 txt 變數傳遞字串 '瞬間即逝 !'。接下來的步驟就和 statbar(txt) 一樣, window.status 收到 txt 的值後將之顯示在 statusbar 上。而 setTimeout(...)這項新函式是用來作為一個 "定時器"。setTimeout(...)能作些什麼事呢?它的主要特性是當某段設定的時間 "跑" 完了之後,便執行某函式。在這個例子中,於 1000 毫秒後 (也就是 1 秒後) 就會執行 erase()。換句話說,當 1 秒結束後 moveover(txt) 的功能就會因 erase()的自動執行而停止。<br>雖然規定時間 "跑" 完後定時器并不會重新啟動,但您可以在 erase() 中再用一次setTimeout(...),使其循還不斷,看起來就像一個跑馬燈 (scroller)。 <p><HR WIDTH="80%" ALIGN="center" SIZE="2"><p><a name="scroller"></a>您已學到了 setTimeout 的功能和如何在 statusbar 中顯示文字,接下我將教您如何制作一個在statusbar 顯示的 "跑馬燈" (scroller)。<p>請按下方的按鈕看看我做的 scroller。由於 script 需由 server 載入到您的電腦中,因此這要花一點時間,請耐心等一下。<p><form><input type="button" name="Button" value="跑馬燈 (Scroller)" onclick="WinOpen('scroller.html')"></form><p>以下是原始碼 :<p><pre><html><head><script language="JavaScript"><!-- Hidevar scrtxt="怎麼樣 ! 很酷吧 ! 您也可以試試."+"Here goes your message the visitors to your page will "+"look at for hours in pure fascination...";var lentxt=scrtxt.length;var width=100;var pos=1-width;function scroll() { pos++; var scroller=""; if (pos==lentxt) { pos=1-width; } if (pos<0) { for (var i=1; i<=Math.abs(pos); i++) { scroller=scroller+" ";} scroller=scroller+scrtxt.substring(0,width-i+1); } else { scroller=scroller+scrtxt.substring(pos,width+pos); } window.status = scroller; setTimeout("scroll()",150); }//--></script></head><body onLoad="scroll();return true;">這里可顯示您的網頁 !</body></html></pre><p>上面 script 用的語法相信大部份您已經懂了。 setTimeout(...) "告訴" 計時器當時間到了就呼叫 scroll()。 如此一來 scroller便會向前移動一步。在 script 的開頭有許多計算式,那是用來決定文字開始顯示的位置,了不了解并不重要。一旦決定了文字的啟始位置,就必需加些空格 (space) 以使文字能顯示在正確位置。<p>在此章一開始我曾提到,此種 scroller 并不是很受歡迎。即使是,也不會持續很久。為什麼呢?下面我列出幾個主要原因:<br>當第一次看到 scroller 或許您會覺得很新奇,但久而久之便會覺得索然無味。當然,這是所有"酷玩意兒" (cool trick) 皆有的現象。<br>其實這還不是主要原因,更嚴重的問題還在後頭呢 ! 當您移動 mouse 時,您可以發現 scroller 的速度改變了 (至少在我的機器上是如此)。尤其當您更改 setTimeout 的值為使 scroller 跑快一點時,這種情況更嚴重。不過這問題或許還有解決方法。更糟的是若讓 scroller 跑久一點,會出現 <i>Out of memory error</i>的問題 ! 天呀 ! 這是 Netscape Navigator 2.0 的一個 "臭蟲" (bug)。我們期待新的版本能更正此 bug (譯按 : Netscape Navigator Atlas Preview Release 已更正此 bug)。<p>在網路上有許多這方面的應用,您可以試著找找。我曾經看過有人將 scroller 放在 Homepage 中,這應該不會太難。(譯按 : 有興趣的人可叁考目錄中本人所制做的 scroller)</TD></TR></TABLE></CENTER><p><HR WIDTH="80%" ALIGN="center" SIZE="2"><p><center><h4><a href="index.html" onMouseOver="stat('回到主頁'); return true">回主目錄</a> </h4></center><p><br><i>原作最後更新: 25.Feb.'96<br>© 1996 by Stefan Koch<br>譯作最後更新:1996年5月16日<br>© 1996 由 <font color=red>段喜亭</font> 翻譯</i><br><br></body></html>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -