現(xiàn)在我們發(fā)現(xiàn)似乎把一大串字符寫在onlick里似乎有點(diǎn)不自然,如果將來邏輯更復(fù)雜了將很難維護(hù),不如就單建個(gè)函數(shù)專門負(fù)責(zé)此事。它也可以包含更復(fù)雜的調(diào)度邏輯。此外,我們對(duì)兩個(gè)文本框的類型沒有驗(yàn)證,如果輸入的不是我們想要的數(shù)據(jù)類型怎么辦?所以還要加上判斷邏輯。所以修改如下:
運(yùn)行代碼框
[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運(yùn)行]
GenerateBarCode 要去掉text左右的空格,然后還要檢查width是否是有效值(這里最大設(shè)為20,不過你可以隨便改,太大似乎就有點(diǎn)變態(tài)了)。
然而我們的條形碼還是沒出來,但是我們已經(jīng)恨厭倦alert了,這次一定要讓getHexes返回一個(gè)數(shù)組給GenerateBarCode,然后讓GenerateBarCode進(jìn)行后續(xù)處理。
運(yùn)行代碼框
[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運(yùn)行]
GenerateBarCode接到getHexes傳過來的數(shù)組以后開始使用其中的十六進(jìn)制位構(gòu)造DIV小單元。其中,我們用 background-image 來指明背景文件的位置,正好我剛才上傳了做好的gif文件,用gifURL保存它的位置。background-position-x表示背景圖片水平方向偏移,我們用十六進(jìn)制位(范圍是0-15) X 8 (即gif小單元的像素寬度) 正好就可以讓我們想要的gif小單元作為當(dāng)前div的背景了。這就是我們的gif為什么要做成那樣的原因。實(shí)際上,之所以要把所有的小單元放在一個(gè)圖片里,主要是為了節(jié)省I/O調(diào)用的次數(shù),提高效率。
GenerateBarCode中的for循環(huán),終止條件是iWidth,以便讓sText補(bǔ)足iWidth位時(shí),也能顯示出 iWidth 位來,因?yàn)閿?shù)組空元素的默認(rèn)值可以返回0。
我們給承接結(jié)果的div賦以id為BarCode_Field,將構(gòu)造好的HTML片段放在這個(gè)div中,頁面就可以呈現(xiàn)出條形碼了。
然而似乎還是沒看到條形碼。那當(dāng)然了,我們的gif背景透明色已經(jīng)讓頁面的背景白色透過來了,白成一片了,當(dāng)然看不著。我們得改一下Body的背景顏色。如下:
運(yùn)行代碼框
[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運(yùn)行]
大功告成。
最后,給大家貼一個(gè)更完美一點(diǎn)的版本,不細(xì)述了。
運(yùn)行代碼框
[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運(yùn)行]
其中修改了一些地方,以使得在Firefox也能顯示。首先。Firefox只能識(shí)別標(biāo)準(zhǔn)的background-position屬性,接受兩個(gè)值,我們只要把第二個(gè)值設(shè)為0就可以了。 此外,SELECT對(duì)象添加option元素也有一點(diǎn)小區(qū)別。
經(jīng)典論壇討論: http://bbs.blueidea.com/thread-2737823-1-231.html
本文鏈接:http://www.95time.cn/tech/web/2007/5131.asp
出處:藍(lán)色理想
責(zé)任編輯:moby
上一頁 手把手教你做超酷的條形碼效果 [5] 下一頁
◎進(jìn)入論壇網(wǎng)頁制作、WEB標(biāo)準(zhǔn)化版塊參加討論,我還想發(fā)表評(píng)論。
|