posted @
2005-09-08 17:26 Stephen 閱讀(507) |
評論 (0) |
編輯 收藏
1.overflow內容溢出時的設置(設定被設定對象是否顯示滾動條)
overflow-x水平方向內容溢出時的設置
overflow-y垂直方向內容溢出時的設置
以上三個屬性設置的值為visible(默認值)、scroll、hidden、auto。
2.scrollbar-3d-light-color立體滾動條亮邊的顏色(設置滾動條的顏色)
scrollbar-arrow-color上下按鈕上三角箭頭的顏色
scrollbar-base-color滾動條的基本顏色
scrollbar-dark-shadow-color立體滾動條強陰影的顏色
scrollbar-face-color立體滾動條凸出部分的顏色
scrollbar-highlight-color滾動條空白部分的顏色
scrollbar-shadow-color立體滾動條陰影的顏色
我們通過幾個實例來講解上述的樣式屬性:
1.讓瀏覽器窗口永遠都不出現滾動條
沒有水平滾動條
<body style="overflow-x:hidden">
沒有垂直滾動條
<body style="overflow-y:hidden">
沒有滾動條
<body style="overflow-x:hidden;overflow-y:hidden">或<body
style="overflow:hidden">
2.設定多行文本框的滾動條
沒有水平滾動條
<textarea style="overflow-x:hidden"></textarea>
沒有垂直滾動條
<textarea style="overflow-y:hidden"></textarea>
沒有滾動條
<textarea style="overflow-x:hidden;overflow-y:hidden"></textarea>
或<textarea style="overflow:hidden"></textarea>
3.設定窗口滾動條的顏色
設置窗口滾動條的顏色為紅色<body style="scrollbar-base-color:red">
scrollbar-base-color設定的是基本色,一般情況下只需要設置這一個屬性就可以達到改變滾動條顏色的目的。
加上一點特別的效果:
<body style="scrollbar-arrow-color:yellow;scrollbar-base-color:lightsalmon">
4.在樣式表文件中定義好一個類,調用樣式表。
<style>
.coolscrollbar{scrollbar-arrow-color:yellow;scrollbar-base-color:lightsalmon;}
</style>
這樣調用:
<textarea class="coolscrollbar"></textarea>
posted @
2005-09-08 09:27 Stephen 閱讀(366) |
評論 (0) |
編輯 收藏
一、馬太效應
《新約 馬太福音》中有這樣一個故事,一個國王遠行前,交給三個仆人每人一錠銀子,吩咐他們:“你們去做生意,等我回來時,再來見我?!眹趸貋頃r,第一個仆人說:“主人,你交給我們的一錠銀子,我已賺了10錠?!庇谑菄酹剟钏?0座城邑。第二個仆人報告說:“主人,你給我的一錠銀子,我已賺了5錠?!庇谑菄趵剟盍怂?座城邑。第三個仆人報告說:“主人,你給我的一錠銀子,我一直包在手巾里存著,我怕丟失,一直沒有拿出來?!庇谑菄趺顚⒌谌齻€仆人的一錠銀子也賞給第一個仆人,并且說:“凡是少的,就連他所有的也要奪過來。凡是多的,還要給他,叫他多多益善?!边@就是馬太效應。看看我們周圍,就可以發現許多馬太效應的例子。朋友多的人會借助頻繁的交往得到更多的朋友;缺少朋友的人會一直孤獨下去。金錢方面更是如此,即使投資回報率相同,一個比別人投資多10倍的人,收益也多10倍。
這是個贏家通吃的社會,善用馬太效應,贏家就是你。
對企業經營發展而言,馬太效應則告訴我們,要想在某一個領域保持優勢,就必須在此領域迅速做大。當你成為某個領域的領頭羊的時候,即使投資回報率相同,你也能更輕易的獲得比弱小的同行更大的收益。而若沒有實力迅速在某個領域做大,就要不停地尋找新的發展領域,才能保證獲得較好的回報。
二、手表定理
手表定理是指一個人有一只表時,可以知道現在是幾點鐘,而當他同時擁有兩只表時卻無法確定。兩只表并不能告訴一個人更準確的時間,反而會讓看表的人失去對準確時間的信心。你要做的就是選擇其中較信賴的一只,盡力校準它,并以此作為你的標準,聽從它的指引行事。記住尼采的話:“兄弟,如果你是幸運的,你只需有一種道德而不要貪多,這樣,你過橋更容易些。”
如果每個人都“選擇你所愛,愛你所選擇”,無論成敗都可以心安理得。然而,困擾很多人的是:他們被“兩只表”弄得無所,心身交瘁,不知自己該信仰哪一個,還有人在環境、他人的壓力下,違心選擇了自己并不喜歡的道路,為此而郁郁終生,即使取得了受人矚目的成就,也體會不到成功的快樂。
手表定理在企業經營管理方面給我們一種非常直觀的啟發,就是對同一個人或同一個組織的管理不能同時采用兩種不同的方法,不能同時設置兩個不同的目標。甚至每一個人不能由兩個人來同時指揮,否則將使這個企業或這個人無所適從。手表定理所指的另一層含義在于每個人都不能同時挑選兩種不同的價值觀,否則,你的行為將陷于混亂。
三、不值得定律
不值得定律最直觀的表述是:不值得做的事情,就不值得做好,這個定律似乎再簡單不過了,但它的重要性卻時時被人們疏忘。不值得定律反映出人們的一種心理,一個人如果從事的是一份自認為不值得做的事情,往往會保持冷嘲熱諷,敷衍了事的態度。不僅成功率小,而且即使成功,也不會覺得有多大的成就感。
哪些事值得做呢?一般而言,這取決于三個因素。
1、價值觀。關于價值觀我們已經談了很多,只有符合我們價值觀的事,我們才會滿懷熱情去做。
2、個性和氣質。一個人如果做一份與他的個性氣質完全背離的工作,他是很難做好的,如一個好交往的人成了檔案員,或一個害羞者不得不每天和不同的人打交道。
3、現實的處境。同樣一份工作,在不同的處境下去做,給我們的感受也是不同的。例如,在一家大公司,如果你最初做的是打雜跑腿的工作,你很可能認為是不值得的,可是,一旦你被提升為領班或部門經理,你就不會這樣認為了。
總結一下,值得做的工作是:符合我們的價值觀,適合我們的個性與氣質,并能讓我們看到期望。如果你的工作不具備這三個因素,你就要考慮換一個更合適的工作,并努力做好它。
因此,對個人來說,應在多種可供選擇的奮斗目標及價值觀中挑選一種,然后為之而奮斗?!斑x擇你所愛的,愛你所選擇的”,才可能激發我們的奮斗毅力,也才可以心安理得。而對一個企業或組織來說,則要很好地分析員工的性格特性,合理分配工作,如讓成就欲較強的職工單獨或牽頭來完成具有一定風險和難度的工作,并在其完成時給予定時的肯定和贊揚;讓依附欲較強的職工更多地參加到某個團體中共同工作;讓權力欲較強的職工擔任一個與之能力相適應的主管。同時要加強員工對企業目標的認同感,讓員工感覺到自己所做的工作是值得的,這樣才能激發職工的熱情。
四、彼得原理
彼得原理是美國學者勞倫斯?彼得在對組織中人員晉升的相關現象研究后得出的一個結論;在各種組織中,由于習慣于對在某個等級上稱職的人員進行晉升提拔,因而雇員總是趨向于晉升到其不稱職的地位。彼得原理有時也被稱為“向上爬”原理。這種現象在現實生活中無處不在:一名稱職的教授被提升為大學校長后無法勝任;一個優秀的運動員被提升為主管體育的官員,而無所作為。
對一個組織而言,一旦組織中的相當部分人員被推到了其不稱職的級別,就會造成組織的人浮于事,效率低下,導致平庸者出人頭地,發展停滯。因此,這就要求改變單純的“根據貢獻決定晉升”的企業員工晉升機制,不能因某個人在某一個崗位級別上干得很出色,就推斷此人一定能夠勝任更高一級的職務。要建立科學、合理的人員選聘機制,客觀評價每一位職工的能力和水平,將職工安排到其可以勝任的崗位。不要把崗位晉升當成對職工的主要獎勵方式,應建立更有效的獎勵機制,更多地以加薪、休假等方式作為獎勵手段。有時將一名職工晉升到一個其無法很好發揮才能的崗位,不僅不是對職工的獎勵,反而使職工無法很好發揮才能,也給企業帶來損失。
對個人而言,雖然我們每個人都期待著不停地升職,但不要將往上爬作為自己的惟一動力。與其在一個無法完全勝任的崗位勉力支撐、無所適從,還不如找一個自己能游刃有余的崗位好好發揮自己的專長。
五、零和游戲原理
當你看到兩位對弈者時,你就可以說他們正在玩“零和游戲”。因為在大多數情況下,總會有一個贏,一個輸,如果我們把獲勝計算為得1分,而輸棋為-1分,那么,這兩人得分之和就是:1+(-1)=0。
這正是“零和游戲”的基本內容:游戲者有輸有贏,一方所贏正是另一方所輸,游戲的總成績永遠是零。
零和游戲原理之所以廣受關注,主要是因為人們發現在社會的方方面面都能發現與“零和游戲”類似的局面,勝利者的光榮后面往往隱藏著失敗者的辛酸和苦澀。從個人到國家,從政治到經濟,似乎無不驗證了世界正是一個巨大的“零和游戲”場。這種理論認為,世界是一個封閉的系統,財富、資源、機遇都是有限的,個別人、個別地區和個別國家財富的增加必然意味著對其他人、其他地區和國家的掠奪,這是一個“邪惡進化論”式的弱肉強食的世界。
但20世紀人類在經歷了兩次世界大戰,經濟的高速增長、科技進步、全球化以及日益嚴重的環境污染之后,“零和游戲”觀念正逐漸被“雙贏”觀念所取代。人們開始認識到“利己”不一定要建立在“損人”的基礎上。通過有效合作,皆大歡喜的結局是可能出現的。但從“零和游戲”走向“雙贏”,要求各方要有真誠合作的精神和勇氣,在合作中不要耍小聰明,不要總想占別人的小便宜,要遵守游戲規則,否則“雙贏”的局面就不可能出現,最終吃虧的還是自己。
六、華盛頓合作規律。
華盛頓合作規律說的是:一個人敷衍了事,兩個人互相推諉,三個人則永無成事之日。多少有點類似于我們“三個和尚”的故事。人與人的合作不是人力的簡單相加,而是要復雜和微妙得多。在人與人的合作中,假定每個人的能力都為1,那么10個人的合作結果就有時比10大得多,有時甚至比1還要小。因為人不是靜止的動物,而更像方向各異的能量,相推動時自然事半功倍,相互抵觸時則一事無成。我們傳統的管理理論中,對合作研究得并不多,最直觀的反映就是,目前的大多數管理制度和行業都是致力于減少人力的無謂消耗,而非利用組織提高人的效能。換言之,不妨說管理的主要目的不是讓每個人做到最好,而是避免內耗過多。21世紀將是一個合作的時代,值得慶幸的是,越來越多的人已經認識到真誠合作的重要性,正在努力學習合作。
邦尼人力定律:一個人一分鐘可以挖一個洞,六十個人一秒種卻挖不了一個洞。
合作是一個問題,如何合作也是一個問題。
七、酒與污水定律
酒與污水定律是指,如果把一匙酒倒進一桶污水中,你得到的是一桶污水;如果把一匙污水倒進一桶酒中,你得到的還是一桶污水。幾乎在任何組織里,都存在幾個難弄的人物,他們存在的目的似乎就是為了把事情搞糟。他們到處搬弄是非,傳播流言、破壞組織內部的和諧。最糟糕的是,他們像果箱里的爛蘋果,如果你不及時處理,它會迅速傳染,把果箱里其它蘋果也弄爛,“爛蘋果”的可怕之處在于它那驚人的破壞力。一個正直能干的人進入一個混亂的部門可能會被吞沒,而一個人無德無才者能很快將一個高效的部門變成一盤散沙。組織系統往往是脆弱的,是建立在相互理解、妥協和容忍的基礎上的,它很容易被侵害、被毒化。破壞者能力非凡的另一個重要原因在于,破壞總比建設容易。一個能工巧匠花費時日精心制作的陶瓷器,一頭驢子一秒鐘就能毀壞掉。如果擁有再多的能工巧匠,也不會有多少像樣的工作成果。如果你的組織里有這樣的一頭驢子,你應該馬上把它清除掉;如果你無力這樣做,你就應該把它拴起來。
八、水桶定律
水桶定律是講,一只水桶能裝多少水,完全取決于它最短的那塊木板。這就是說任何一個組織都可能面臨的一個共同問題,即構成組織的各個部分往往決定了整個組織的水平。
構成組織的各個部分往往是優劣不齊的,而劣質部分往往又決定整個組織的水平。
“水桶定律”與“酒與污水定律”不同,后者討論的是組織中的破壞力量,而“最短的木板”卻是組織中有用的一個部分,只不過比其它部分差一些,你不能把它們當成爛蘋果扔掉。強弱只是相對而言的,無法消除。問題在于你容忍這種弱點到什么程度。如果它嚴重到成為阻礙工作的瓶頸,就不得不有所動作。
如果你在一個組織中,你應該:
1、確保你不是最薄弱的部分;
2、避免或減少這一薄弱環節對你成功的影響;
3、如果不幸,你正處在這一環節中,你還可以采取有效的方法改進,或者轉職去謀另一份工作。
九、蘑菇管理
蘑菇管理是許多組織對待初出茅廬者的一種管理方法,初學者被置于陰暗的角落(不受重視的部門,或打雜跑腿的工作),澆上一頭大糞(無端的批評、指責、代人受過),任其自生自滅(得不到必要的指導和提攜)。相信很多人都有這樣一段“蘑菇”的經歷,但這不一定是什么壞事,尤其是當一切都剛剛開始的時候,當上幾天“蘑菇”,能夠消除我們很多不切實際的幻想,讓我們更加接近現實,看問題也更加實際,而對一個組織而言,一般地新進的人員都是一視同仁,從起薪到工作都不會有大的差別。無論你是多么優秀的人才,在剛開始的時候都只能從最簡單的事情做起,“蘑菇”的經歷對于成長中的年輕人來說,就像蠶繭,是羽化前必須經歷的一步。所以,如何高效率地走過生命中的這一段,從中盡可能吸取經驗,成熟起來,并樹立良好的值得信賴的個人形象,是每個剛入社會的年輕人必須面對的課題。
十、奧卡姆剃刀定律
如果你認為只有焦頭爛額、忙忙碌碌地工作才可能取得成功,那么,你錯了。
事情總是朝著復雜的方向發展,復雜會造成浪費,而效能則來自于單純。在你做過的事情中可能絕大部分是毫無意義的,真正有效的活動只是其中的一小部分,而它們通常隱含于繁雜的事物中。找到關鍵的部分,去掉多余的活動,成功并不那么復雜。
奧卡姆剃刀:如無發要,勿增實體。
12世紀,英國奧卡姆的威廉對無休無止的關于“共相”、“本質”之類的爭吵感到厭倦,主張唯名論,只承認確實存在的東西,認為那些空洞無物的普遍性要領都是無用的累贅,應當被無情地“剃除”。他主張,“如無必要,勿增實體?!边@就是常說的“奧卡姆剃刀”。這把剃刀曾使很多人感到威脅,被認為是異端邪說,威廉本人也受到傷害。然而,這并未損害這把刀的鋒利,相反,經過數百年越來越快,并早已超越了原來狹窄的領域而具有廣泛的、豐富的、深刻的意義。
奧卡姆剃刀定律在企業管理中可進一步深化為簡單與復雜定律:把事情變復雜很簡單,把事情變簡單很復雜。這個定律要求,我們在處理事情時,要把握事情的主要實質,把握主流,解決最根本的問題。尤其要順應自然,不要把事情人為地復雜化,這樣才能把事情處理好。
十一、二八法則
你所完成的工作里80%的成果,來自于你20%的付出;而80%的付出,只換來20%的成果
十二、錢的問題
當某人告訴你:“不是錢,而是原則問題”時,十有八九就是錢的問題。
照一般的說法,金錢是價值的尺度,交換的媒介,財富的貯藏。但是這種說法忽略了它的另一面,它令人陶醉、令人瘋狂、令人激動的一面,也撇開了愛錢的心理不談。馬克思說,金錢是“人情的離心力”,就是指這一方面而言。
關于金錢的本質、作用和功過,從古到今,人們已經留下了無數精辟深刻的格言和妙語。我們常會看到,人們為錢而興奮,努力賺錢,用財富的畫面挑逗自己。金錢對世界的秩序以及我們的生活產生的影響是巨大的、廣泛的,這種影響有時是潛在的,我們往往意識不到它的作用如此巨大,然而奇妙的是:它完全是人類自己創造的。致富的驅動力并不是起源于生物學上的需要,動物生活中也找不到任何相同的現象。它不能順應基本的目標,不能滿足根本的需求 -的確,“致富”的定義就是獲得超過自己需要的東西。然而這個看起來漫無目標的驅動力卻是人類最強大的力量,人類為金錢而互相傷害,遠超過其他原因。
posted @
2005-05-26 13:07 Stephen 閱讀(398) |
評論 (0) |
編輯 收藏
Altova XMLSpy 2005 SP3 企業特別版
所有XML編輯器中做得非常好的一個軟件,專門用于設計,編輯和調試企業級的應用程序,包括XML, XML Schema, XSL/XSLT, SOAP, WSDL 和互聯網服務技術,這是J2EE,.NET和數據庫開發人員不可缺少的高性能的開發工具
http://www.xia8.com/SoftView/SoftView_7210.html
posted @
2005-05-25 09:27 Stephen 閱讀(342) |
評論 (0) |
編輯 收藏
大概有史以來頭一次想做個孝順兒子。
有時間一定要多陪陪他們
posted @
2005-04-29 18:25 Stephen 閱讀(535) |
評論 (0) |
編輯 收藏
1、轉換函數
與date操作關系最大的就是兩個轉換函數:to_date(),to_char()
to_date() 作用將字符類型按一定格式轉化為日期類型:
具體用法:to_date('2004-11-27','yyyy-mm-dd'),前者為字符串,后者為轉換日期格式,注意,前后兩者要以一對應。
如;to_date('2004-11-27 13:34:43', 'yyyy-mm-dd hh24:mi:ss') 將得到具體的時間
多種日期格式:
YYYY:四位表示的年份
YYY,YY,Y:年份的最后三位、兩位或一位,缺省為當前世紀
MM:01~12的月份編號
MONTH:九個字符表示的月份,右邊用空格填補
MON:三位字符的月份縮寫
WW:一年中的星期
D:星期中的第幾天
DD:月份中的第幾天
DDD:年所中的第幾天
DAY:九個字符表示的天的全稱,右邊用空格補齊
HH,HH12:一天中的第幾個小時,12進制表示法
HH24:一天中的第幾個小時,取值為00~23
MI:一小時中的分鐘
SS:一分鐘中的秒
SSSS:從午夜開始過去的秒數
to_char():將日期轉按一定格式換成字符類型
SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') time from dual;
TIME
-------------------
2004-10-08 15:22:58
即把當前時間按yyyy-mm-dd hh24:mi:ss格式轉換成字符類型
在oracle中處理日期大全
TO_DATE格式
Day:
dd number 12
dy abbreviated fri
day spelled out friday
ddspth spelled out, ordinal twelfth
Month:
mm number 03
mon abbreviated mar
month spelled out march
Year:
yy two digits 98
yyyy four digits 1998
24小時格式下時間范圍為: 0:00:00 - 23:59:59....
12小時格式下時間范圍為: 1:00:00 - 12:59:59 ....
[ZT]日期和時間函數匯總1.
日期和字符轉換函數用法(to_date,to_char)
2.
select to_char( to_date(222,'J'),'Jsp') from dual
顯示Two Hundred Twenty-Two
3.
求某天是星期幾
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual;
星期一
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;
monday
設置日期語言
ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';
也可以這樣
TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American')
4.
兩個日期間的天數
select floor(sysdate - to_date('20020405','yyyymmdd')) from dual;
5. 時間為null的用法
select id, active_date from table1
UNION
select 1, TO_DATE(null) from dual;
注意要用TO_DATE(null)
6.
a_date between to_date('20011201','yyyymmdd') and to_date('20011231','yyyymmdd')
那么12月31號中午12點之后和12月1號的12點之前是不包含在這個范圍之內的。
所以,當時間需要精確的時候,覺得to_char還是必要的
7. 日期格式沖突問題
輸入的格式要看你安裝的ORACLE字符集的類型, 比如: US7ASCII, date格式的類型就是: '01-Jan-01'
alter system set NLS_DATE_LANGUAGE = American
alter session set NLS_DATE_LANGUAGE = American
或者在to_date中寫
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;
注意我這只是舉了NLS_DATE_LANGUAGE,當然還有很多,
可查看
select * from nls_session_parameters
select * from V$NLS_PARAMETERS
8.
select count(*)
from ( select rownum-1 rnum
from all_objects
where rownum <= to_date('2002-02-28','yyyy-mm-dd') - to_date('2002-
02-01','yyyy-mm-dd')+1
)
where to_char( to_date('2002-02-01','yyyy-mm-dd')+rnum-1, 'D' )
not
in ( '1', '7' )
查找2002-02-28至2002-02-01間除星期一和七的天數
在前后分別調用DBMS_UTILITY.GET_TIME, 讓后將結果相減(得到的是1/100秒, 而不是毫秒).
9.
select months_between(to_date('01-31-1999','MM-DD-YYYY'),
to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;
1
select months_between(to_date('02-01-1999','MM-DD-YYYY'),
to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;
1.03225806451613
10. Next_day的用法
Next_day(date, day)
Monday-Sunday, for format code DAY
Mon-Sun, for format code DY
1-7, for format code D
11
select to_char(sysdate,'hh:mi:ss') TIME from all_objects
注意:第一條記錄的TIME 與最后一行是一樣的
可以建立一個函數來處理這個問題
create or replace function sys_date return date is
begin
return sysdate;
end;
select to_char(sys_date,'hh:mi:ss') from all_objects;
12.
獲得小時數
SELECT EXTRACT(HOUR FROM TIMESTAMP '2001-02-16 2:38:40') from offer
SQL> select sysdate ,to_char(sysdate,'hh') from dual;
SYSDATE TO_CHAR(SYSDATE,'HH')
-------------------- ---------------------
2003-10-13 19:35:21 07
SQL> select sysdate ,to_char(sysdate,'hh24') from dual;
SYSDATE TO_CHAR(SYSDATE,'HH24')
-------------------- -----------------------
2003-10-13 19:35:21 19
獲取年月日與此類似
13.
年月日的處理
select older_date,
newer_date,
years,
months,
abs(
trunc(
newer_date-
add_months( older_date,years*12+months )
)
) days
from ( select
trunc(months_between( newer_date, older_date )/12) YEARS,
mod(trunc(months_between( newer_date, older_date )),
12 ) MONTHS,
newer_date,
older_date
from ( select hiredate older_date,
add_months(hiredate,rownum)+rownum newer_date
from emp )
)
14.
處理月份天數不定的辦法
select to_char(add_months(last_day(sysdate) +1, -2), 'yyyymmdd'),last_day(sysdate) from dual
16.
找出今年的天數
select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual
閏年的處理方法
to_char( last_day( to_date('02' || :year,'mmyyyy') ), 'dd' )
如果是28就不是閏年
17.
yyyy與rrrr的區別
'YYYY99 TO_C
------- ----
yyyy 99 0099
rrrr 99 1999
yyyy 01 0001
rrrr 01 2001
18.不同時區的處理
select to_char( NEW_TIME( sysdate, 'GMT','EST'), 'dd/mm/yyyy hh:mi:ss') ,sysdate
from dual;
19.
5秒鐘一個間隔
Select TO_DATE(FLOOR(TO_CHAR(sysdate,'SSSSS')/300) * 300,'SSSSS') ,TO_CHAR(sysdate,'SSSSS')
from dual
2002-11-1 9:55:00 35786
SSSSS表示5位秒數
20.
一年的第幾天
select TO_CHAR(SYSDATE,'DDD'),sysdate from dual
310 2002-11-6 10:03:51
21.計算小時,分,秒,毫秒
select
Days,
A,
TRUNC(A*24) Hours,
TRUNC(A*24*60 - 60*TRUNC(A*24)) Minutes,
TRUNC(A*24*60*60 - 60*TRUNC(A*24*60)) Seconds,
TRUNC(A*24*60*60*100 - 100*TRUNC(A*24*60*60)) mSeconds
from
(
select
trunc(sysdate) Days,
sysdate - trunc(sysdate) A
from dual
)
select * from tabname
order by decode(mode,'FIFO',1,-1)*to_char(rq,'yyyymmddhh24miss');
//
floor((date2-date1) /365) 作為年
floor((date2-date1, 365) /30) 作為月
mod(mod(date2-date1, 365), 30)作為日.
23.next_day函數
next_day(sysdate,6)是從當前開始下一個星期五。后面的數字是從星期日開始算起。
1 2 3 4 5 6 7
日 一 二 三 四 五 六
oracle中有很多關于日期的函數
在oracle中有很多關于日期的函數,如:
1、add_months()用于從一個日期值增加或減少一些月份
date_value:=add_months(date_value,number_of_months)
例:
SQL> select add_months(sysdate,12) "Next Year" from dual;
Next Year
----------
13-11月-04
SQL> select add_months(sysdate,112) "Last Year" from dual;
Last Year
----------
13-3月 -13
SQL>
2、current_date()返回當前會放時區中的當前日期
date_value:=current_date
SQL> column sessiontimezone for a15
SQL> select sessiontimezone,current_date from dual;
SESSIONTIMEZONE CURRENT_DA
--------------- ----------
+08:00 13-11月-03
SQL> alter session set time_zone='-11:00'
2 /
會話已更改。
SQL> select sessiontimezone,current_timestamp from dual;
SESSIONTIMEZONE CURRENT_TIMESTAMP
--------------- ------------------------------------
-11:00 12-11月-03 04.59.13.668000 下午 -11:
00
SQL>
3、current_timestamp()以timestamp with time zone數據類型返回當前會放時區中的當前日期
timestamp_with_time_zone_value:=current_timestamp([timestamp_precision])
SQL> column sessiontimezone for a15
SQL> column current_timestamp format a36
SQL> select sessiontimezone,current_timestamp from dual;
SESSIONTIMEZONE CURRENT_TIMESTAMP
--------------- ------------------------------------
+08:00 13-11月-03 11.56.28.160000 上午 +08:
00
SQL> alter session set time_zone='-11:00'
2 /
會話已更改。
SQL> select sessiontimezone,current_timestamp from dual;
SESSIONTIMEZONE CURRENT_TIMESTAMP
--------------- ------------------------------------
-11:00 12-11月-03 04.58.00.243000 下午 -11:
00
SQL>
4、dbtimezone()返回時區
varchar_value:=dbtimezone
SQL> select dbtimezone from dual;
DBTIME
------
-07:00
SQL>
5、extract()找出日期或間隔值的字段值
date_value:=extract(date_field from [datetime_value|interval_value])
SQL> select extract(month from sysdate) "This Month" from dual;
This Month
----------
11
SQL> select extract(year from add_months(sysdate,36)) "3 Years Out" from dual;
3 Years Out
-----------
2006
SQL>
6、last_day()返回包含了日期參數的月份的最后一天的日期
date_value:=last_day(date_value)
SQL> select last_day(date'2000-02-01') "Leap Yr?" from dual;
Leap Yr?
----------
29-2月 -00
SQL> select last_day(sysdate) "Last day of this month" from dual;
Last day o
----------
30-11月-03
SQL>
7、localtimestamp()返回會話中的日期和時間
timestamp_value:=localtimestamp
SQL> column localtimestamp format a28
SQL> select localtimestamp from dual;
LOCALTIMESTAMP
----------------------------
13-11月-03 12.09.15.433000
下午
SQL> select localtimestamp,current_timestamp from dual;
LOCALTIMESTAMP CURRENT_TIMESTAMP
---------------------------- ------------------------------------
13-11月-03 12.09.31.006000 13-11月-03 12.09.31.006000 下午 +08:
下午 00
SQL> alter session set time_zone='-11:00';
會話已更改。
SQL> select localtimestamp,to_char(sysdate,'DD-MM-YYYY HH:MI:SS AM') "SYSDATE" from dual;
LOCALTIMESTAMP SYSDATE
---------------------------- ------------------------
12-11月-03 05.11.31.259000 13-11-2003 12:11:31 下午
下午
SQL>
8、months_between()判斷兩個日期之間的月份數量
number_value:=months_between(date_value,date_value)
SQL> select months_between(sysdate,date'1971-05-18') from dual;
MONTHS_BETWEEN(SYSDATE,DATE'1971-05-18')
----------------------------------------
389.855143
SQL> select months_between(sysdate,date'2001-01-01') from dual;
MONTHS_BETWEEN(SYSDATE,DATE'2001-01-01')
----------------------------------------
34.4035409
SQL>
9、next_day()給定一個日期值,返回由第二個參數指出的日子第一次出現在的日期值(應返回相應日子的名稱字符串)
與周相關日期函數
1.查詢某周的第一天 select trunc(decode(ww, 53, to_date(yy || '3112', 'yyyyddmm'), to_date(yy || '-' || to_char(ww * 7), 'yyyy-ddd')), 'd') last_day from (select substr('2004-32', 1, 4) yy, to_number(substr('2004-32', 6)) ww from dual)
select trunc(to_date(substr('2003-01',1,5)||to_char((to_number(substr('2003-01',6)))*7),'yyyy-ddd'),'d')-6 first_day from dual
select min(v_date) from (select (to_date('200201','yyyymm') + rownum) v_date from all_tables where rownum < 370) where to_char(v_date,'yyyy-iw') = '2002-49'
2.查詢某周的最后一天 select trunc(decode(ww, 53, to_date(yy || '3112', 'yyyyddmm'), to_date(yy || '-' || to_char(ww * 7), 'yyyy-ddd')), 'd') - 6 first_day from (select substr('2004-33', 1, 4) yy, to_number(substr('2004-33', 6)) ww from dual) select trunc(to_date(substr('2003-01',1,5)||to_char((to_number(substr('2003-01',6)))*7),'yyyy-ddd'),'d') last_day from dual
select max(v_date) from (select (to_date('200408','yyyymm') + rownum) v_date from all_tables where rownum < 370) where to_char(v_date,'yyyy-iw') = '2004-33'
3.查詢某周的日期 select min_date, to_char(min_date,'day') day from (select to_date(substr('2004-33',1,4)||'001'+rownum-1,'yyyyddd') min_date from all_tables where rownum <= decode(mod(to_number(substr('2004-33',1,4)),4),0,366,365) union
select to_date(substr('2004-33',1,4)-1|| decode(mod(to_number(substr('2004-33',1,4))-1,4),0,359,358)+rownum,'yyyyddd') min_date from all_tables where rownum <= 7 union
select to_date(substr('2004-33',1,4)+1||'001'+rownum-1,'yyyyddd') min_date from all_tables where rownum <= 7 ) where to_char(min_date,'yyyy-iw') ='2004-33' |
posted @
2005-04-25 13:47 Stephen 閱讀(1497) |
評論 (0) |
編輯 收藏
shit,轉眼就要畢業一年了。
上班才發現,日子這么好混,好像前幾天還在談論過年回家的事,現在又要過5.1了,實在是快呀
年初的時候,本來打算寫個04年終總結來的,寫了一半,就寫了3000多,后來剩下的一半也一直沒寫,心血來潮大概也是雙子的特性之一吧,等想寫的時候,原來的一半也不見了。
再過幾十天,老子也23歲了,感覺起來也不小了
當時給自己定的計劃,三年內做個標準程序員,現在看來還是沒什么進展,一直在做編碼工。
今年上半年一直在郁悶中,有兩件比較高興的事,一是有了新家,大概9月份可以住進去,一是老婆找到了不錯的工作;
可喜~
下半年,換份工作,繼續學習J2ee和oracle
+u
posted @
2005-04-23 10:23 Stephen 閱讀(495) |
評論 (0) |
編輯 收藏
一、驗證類
1、數字驗證內
1.1 整數
1.2 大于0的整數 (用于傳來的ID的驗證)
1.3 負整數的驗證
1.4 整數不能大于iMax
1.5 整數不能小于iMin
2、時間類
2.1 短時間,形如 (13:04:06)
2.2 短日期,形如 (2003-12-05)
2.3 長時間,形如 (2003-12-05 13:04:06)
2.4 只有年和月。形如(2003-05,或者2003-5)
2.5 只有小時和分鐘,形如(12:03)
3、表單類
3.1 所有的表單的值都不能為空
3.2 多行文本框的值不能為空。
3.3 多行文本框的值不能超過sMaxStrleng
3.4 多行文本框的值不能少于sMixStrleng
3.5 判斷單選框是否選擇。
3.6 判斷復選框是否選擇.
3.7 復選框的全選,多選,全不選,反選
3.8 文件上傳過程中判斷文件類型
4、字符類
4.1 判斷字符全部由a-Z或者是A-Z的字字母組成
4.2 判斷字符由字母和數字組成。
4.3 判斷字符由字母和數字,下劃線,點號組成.且開頭的只能是下劃線和字母
4.4 字符串替換函數.Replace();
5、瀏覽器類
5.1 判斷瀏覽器的類型
5.2 判斷ie的版本
5.3 判斷客戶端的分辨率
6、結合類
6.1 email的判斷。
6.2 手機號碼的驗證
6.3 身份證的驗證
二、功能類
1、時間與相關控件類
1.1 日歷
1.2 時間控件
1.3 萬年歷
1.4 顯示動態顯示時鐘效果(文本,如OA中時間)
1.5 顯示動態顯示時鐘效果 (圖像,像手表)
2、表單類
2.1 自動生成表單
2.2 動態添加,修改,刪除下拉框中的元素
2.3 可以輸入內容的下拉框
2.4 多行文本框中只能輸入iMax文字。如果多輸入了,自動減少到iMax個文字(多用于短信發送)
3、打印類
3.1 打印控件
4、事件類
4.1 屏蔽右鍵
4.2 屏蔽所有功能鍵
4.3 --> 和<-- F5 F11,F9,F1
4.4 屏蔽組合鍵ctrl+N
5、網頁設計類
5.1 連續滾動的文字,圖片(注意是連續的,兩段文字和圖片中沒有空白出現)
5.2 html編輯控件類
5.3 顏色選取框控件
5.4 下拉菜單
5.5 兩層或多層次的下拉菜單
5.6 仿IE菜單的按鈕。(效果如rongshuxa.com的導航欄目)
5.7 狀態欄,title欄的動態效果(例子很多,可以研究一下)
5.8 雙擊后,網頁自動滾屏
6、樹型結構。
6.1 asp+SQL版
6.2 asp+xml+sql版
6.3 java+sql或者java+sql+xml
7、無邊框效果的制作
8、連動下拉框技術
9、文本排序
一、驗證類
1、數字驗證內
1.1 整數
/^(-|\+)?\d+$/.test(str)
1.2 大于0的整數 (用于傳來的ID的驗證)
/^\d+$/.test(str)
1.3 負整數的驗證
/^-\d+$/.test(str)
2、時間類
2.1 短時間,形如 (13:04:06)
function isTime(str)
{
var a = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/);
if (a == null) {alert('輸入的參數不是時間格式'); return false;}
if (a[1]>24 || a[3]>60 || a[4]>60)
{
alert("時間格式不對");
return false
}
return true;
}
2.2 短日期,形如 (2003-12-05)
function strDateTime(str)
{
var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
if(r==null)return false;
var d= new Date(r[1], r[3]-1, r[4]);
return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]);
}
2.3 長時間,形如 (2003-12-05 13:04:06)
function strDateTime(str)
{
var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
var r = str.match(reg);
if(r==null)return false;
var d= new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]);
return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]&&d.getHours()==r[5]&&d.getMinutes()==r[6]&&d.getSeconds()==r[7]);
}
2.4 只有年和月。形如(2003-05,或者2003-5)
2.5 只有小時和分鐘,形如(12:03)
3、表單類
3.1 所有的表單的值都不能為空
<input onblur="if(this.value.replace(/^\s+|\s+$/g,'')=='')alert('不能為空!')">
3.2 多行文本框的值不能為空。
3.3 多行文本框的值不能超過sMaxStrleng
3.4 多行文本框的值不能少于sMixStrleng
3.5 判斷單選框是否選擇。
3.6 判斷復選框是否選擇.
3.7 復選框的全選,多選,全不選,反選
3.8 文件上傳過程中判斷文件類型
4、字符類
4.1 判斷字符全部由a-Z或者是A-Z的字字母組成
<input onblur="if(/[^a-zA-Z]/g.test(this.value))alert('有錯')">
4.2 判斷字符由字母和數字組成。
<input onblur="if(/[^0-9a-zA-Z]/g.test(this.value))alert('有錯')">
4.3 判斷字符由字母和數字,下劃線,點號組成.且開頭的只能是下劃線和字母
/^([a-zA-z_]{1})([\w]*)$/g.test(str)
4.4 字符串替換函數.Replace();
5、瀏覽器類
5.1 判斷瀏覽器的類型
window.navigat or.appName
5.2 判斷ie的版本
window.navigat or.appVersion
5.3 判斷客戶端的分辨率
window.screen.height; window.screen.width;
6、結合類
6.1 email的判斷。
function ismail(mail)
{
return(new RegExp(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/).test(mail));
}
6.2 手機號碼的驗證
6.3 身份證的驗證
function isIdCardNo(num)
{
if (isNaN(num)) {alert("輸入的不是數字!"); return false;}
var len = num.length, re;
if (len == 15)
re = new RegExp(/^(\d{6})()?(\d{2})(\d{2})(\d{2})(\d{3})$/);
else if (len == 18)
re = new RegExp(/^(\d{6})()?(\d{4})(\d{2})(\d{2})(\d{3})(\d)$/);
else {alert("輸入的數字位數不對!"); return false;}
var a = num.match(re);
if (a != null)
{
if (len==15)
{
var D = new Date("19"+a[3]+"/"+a[4]+"/"+a[5]);
var B = D.getYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5];
}
else
{
var D = new Date(a[3]+"/"+a[4]+"/"+a[5]);
var B = D.getFullYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5];
}
if (!B) {alert("輸入的身份證號 "+ a[0] +" 里出生日期不對!"); return false;}
}
return true;
}
3.7 復選框的全選,多選,全不選,反選
<f orm name=hrong>
<input type=checkbox name=All onclick="checkAll('mm')">全選<br/>
<input type=checkbox name=mm onclick="checkItem('All')"><br/>
<input type=checkbox name=mm onclick="checkItem('All')"><br/>
<input type=checkbox name=mm onclick="checkItem('All')"><br/>
<input type=checkbox name=mm onclick="checkItem('All')"><br/>
<input type=checkbox name=mm onclick="checkItem('All')"><br/><br/>
<input type=checkbox name=All2 onclick="checkAll('mm2')">全選<br/>
<input type=checkbox name=mm2 onclick="checkItem('All2')"><br/>
<input type=checkbox name=mm2 onclick="checkItem('All2')"><br/>
<input type=checkbox name=mm2 onclick="checkItem('All2')"><br/>
<input type=checkbox name=mm2 onclick="checkItem('All2')"><br/>
<input type=checkbox name=mm2 onclick="checkItem('All2')"><br/>
</f orm>
<SCRIPT LANGUAGE="java script">
function checkAll(str)
{
var a = document.getElementsByName(str);
var n = a.length;
f or (var i=0; i<n; i++)
a[i].checked = window.event.srcElement.checked;
}
function checkItem(str)
{
var e = window.event.srcElement;
var all = eval("document.hrong."+ str);
if (e.checked)
{
var a = document.getElementsByName(e.name);
all.checked = true;
f or (var i=0; i<a.length; i++)
{
if (!a[i].checked){ all.checked = false; break;}
}
}
else all.checked = false;
}
</SCRIPT>
3.8 文件上傳過程中判斷文件類型
<input type=file onchange="alert(this.value.match(/^(.*)(\.)(.{1,8})$/)[3])">
畫圖:
<OBJECT
id=S
style="LEFT: 0px; WIDTH: 392px; TOP: 0px; HEIGHT: 240px"
height=240
width=392
classid="clsid:369303C2-D7AC-11D0-89D5-00A0C90833E6">
</OBJECT>
<SCRIPT>
S.DrawingSurface.ArcDegrees(0,0,0,30,50,60);
S.DrawingSurface.ArcRadians(30,0,0,30,50,60);
S.DrawingSurface.Line(10,10,100,100);
</SCRIPT>
寫注冊表:
<SCRIPT>
var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.RegWrite ("HKCU\\Software\\ACME\\F ortuneTeller\\", 1, "REG_BINARY");
WshShell.RegWrite ("HKCU\\Software\\ACME\\F ortuneTeller\\MindReader", "Goocher!", "REG_SZ");
var bKey = WshShell.RegRead ("HKCU\\Software\\ACME\\F ortuneTeller\\");
WScript.Echo (WshShell.RegRead ("HKCU\\Software\\ACME\\F ortuneTeller\\MindReader"));
WshShell.RegDelete ("HKCU\\Software\\ACME\\F ortuneTeller\\MindReader");
WshShell.RegDelete ("HKCU\\Software\\ACME\\F ortuneTeller\\");
WshShell.RegDelete ("HKCU\\Software\\ACME\\");
</SCRIPT>
TABLAE相關(客戶端動態增加行列)
<HTML>
<SCRIPT LANGUAGE="JScript">
function numberCells() {
var count=0;
f or (i=0; i < document.all.mytable.rows.length; i++) {
f or (j=0; j < document.all.mytable.rows(i).cells.length; j++) {
document.all.mytable.rows(i).cells(j).innerText = count;
count++;
}
}
}
</SCRIPT>
<BODY onload="numberCells()">
<TABLE id=mytable b order=1>
<TR><TH> </TH><TH> </TH><TH> </TH><TH> </TH></TR>
<TR><TD> </TD><TD> </TD><TD> </TD><TD> </TD></TR>
<TR><TD> </TD><TD> </TD><TD> </TD><TD> </TD></TR>
</TABLE>
</BODY>
</HTML>
1.身份證嚴格驗證:
<script>
var aCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"內蒙古",21:"遼寧",22:"吉林",23:"黑龍江",31:"上海",32:"江蘇",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山東",41:"河南",42:"湖北",43:"湖南",44:"廣東",45:"廣西",46:"海南",50:"重慶",51:"四川",52:"貴州",53:"云南",54:"西藏",61:"陜西",62:"甘肅",63:"青海",64:"寧夏",65:"新疆",71:"臺灣",81:"香港",82:"澳門",91:"國外"}
function cidInfo(sId){
var iSum=0
var info=""
if(!/^\d{17}(\d|x)$/i.test(sId))return false;
sId=sId.replace(/x$/i,"a");
if(aCity[parseInt(sId.substr(0,2))]==null)return "Err or:非法地區";
sBirthday=sId.substr(6,4)+"-"+Number(sId.substr(10,2))+"-"+Number(sId.substr(12,2));
var d=new Date(sBirthday.replace(/-/g,"/"))
if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" + d.getDate()))return "Err or:非法生日";
f or(var i = 17;i>=0;i --) iSum += (Math.pow(2,i) % 11) * parseInt(sId.charAt(17 - i),11)
if(iSum%11!=1)return "Err or:非法證號";
return aCity[parseInt(sId.substr(0,2))]+","+sBirthday+","+(sId.substr(16,1)%2?"男":"女")
}
document.write(cidInfo("380524198002300016"),"<br/>");
document.write(cidInfo("340524198002300019"),"<br/>")
document.write(cidInfo("340524197711111111"),"<br/>")
document.write(cidInfo("34052419800101001x"),"<br/>");
</script>
2.驗證IP地址
<SCRIPT LANGUAGE="java script">
function isip(s){
var check=function(v){try{return (v<=255 && v>=0)}catch(x){return false}};
var re=s.split(".")
return (re.length==4)?(check(re[0]) && check(re[1]) && check(re[2]) && check(re[3])):false
}
var s="202.197.78.129";
alert(isip(s))
</SCRIPT>
3.加sp1后還能用的無邊框窗口?。?BR><HTML XMLNS:IE>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<IE:Download ID="include" STYLE="behavi or:url(#default#download)" />
<title>Chromeless Window</title>
<SCRIPT LANGUAGE="JScript">
/*--- Special Thanks F or andot ---*/
/*
This following code are designed and writen by Windy_sk <seasonx@163.net>
You can use it freely, but u must held all the copyright items!
*/
/*--- Thanks F or andot Again ---*/
var CW_width = 400;
var CW_height = 300;
var CW_top = 100;
var CW_left = 100;
var CW_url = "/";
var New_CW = window.createPopup();
var CW_Body = New_CW.document.body;
var content = "";
var CSStext = "margin:1px;col or:black; b order:2px outset;b order-style:expression(onmouseout=onmouseup=function(){this.style.b orderStyle='outset'}, onmousedown=function(){if(event.button!=2)this.style.b orderStyle='inset'});background-col or:buttonface;width:16px;height:14px;font-size:12px;line-height:11px;curs or:Default;";
//Build Window
include.startDownload(CW_url, function(source){content=source});
function insert_content(){
var temp = "";
CW_Body.style.overflow = "hidden";
CW_Body.style.backgroundCol or = "white";
CW_Body.style.b order = "solid black 1px";
content = content.replace(/<a ([^>]*)>/g,"<a onclick='parent.open(this.href);return false' $1>");
temp += "<table width=100% height=100% cellpadding=0 cellspacing=0 b order=0>";
temp += "<tr style=';font-size:12px;background:#0099CC;height:20;curs or:default' ondblclick=\"Max.innerText=Max.innerText=='1'?'2':'1';parent.if_max=!parent.if_max;parent.show_CW();\" onmouseup='parent.drag_up(event)' onmousemove='parent.drag_move(event)' onmousedown='parent.drag_down(event)' onselectstart='return false' oncontextmenu='return false'>";
temp += "<td style='col or:#ffffff;padding-left:5px'>Chromeless Window F or IE6 SP1</td>";
temp += "<td style='col or:#ffffff;padding-right:5px;' align=right>";
temp += "<span id=Help onclick=\"alert('Chromeless Window F or IE6 SP1 - Ver 1.0\\n\\nCode By Windy_sk\\n\\nSpecial Thanks F or andot')\" style=\""+CSStext+"font-family:System;padding-right:2px;\">?</span>";
temp += "<span id=Min onclick='parent.New_CW.hide();parent.blur()' style=\""+CSStext+"font-family:Webdings;\" title='Minimum'>0</span>";
temp += "<span id=Max onclick=\"this.innerText=this.innerText=='1'?'2':'1';parent.if_max=!parent.if_max;parent.show_CW();\" style=\""+CSStext+"font-family:Webdings;\" title='Maximum'>1</span>";
temp += "<span id=Close onclick='parent.opener=null;parent.close()' style=\""+CSStext+"font-family:System;padding-right:2px;\" title='Close'>x</span>";
temp += "</td></tr><tr><td colspan=2>";
temp += "<div id=include style='overflow:scroll;overflow-x:hidden;overflow-y:auto; HEIGHT: 100%; width:"+CW_width+"'>";
temp += content;
temp += "</div>";
temp += "</td></tr></table>";
CW_Body.innerHTML = temp;
}
setTimeout("insert_content()",1000);
var if_max = true;
function show_CW(){
window.moveTo(10000, 10000);
if(if_max){
New_CW.show(CW_top, CW_left, CW_width, CW_height);
if(typeof(New_CW.document.all.include)!="undefined"){
New_CW.document.all.include.style.width = CW_width;
New_CW.document.all.Max.innerText = "1";
}
}else{
New_CW.show(0, 0, screen.width, screen.height);
New_CW.document.all.include.style.width = screen.width;
}
}
window.onfocus = show_CW;
window.onresize = show_CW;
// Move Window
var drag_x,drag_y,draging=false
function drag_move(e){
if (draging){
New_CW.show(e.screenX-drag_x, e.screenY-drag_y, CW_width, CW_height);
return false;
}
}
function drag_down(e){
if(e.button==2)return;
if(New_CW.document.body.offsetWidth==screen.width && New_CW.document.body.offsetHeight==screen.height)return;
drag_x=e.clientX;
drag_y=e.clientY;
draging=true;
e.srcElement.setCapture();
}
function drag_up(e){
draging=false;
e.srcElement.releaseCapture();
if(New_CW.document.body.offsetWidth==screen.width && New_CW.document.body.offsetHeight==screen.height) return;
CW_top = e.screenX-drag_x;
CW_left = e.screenY-drag_y;
}
</SCRIPT>
</HTML>
電話號碼的驗證
要求:
(1)電話號碼由數字、"("、")"和"-"構成
(2)電話號碼為3到8位
(3)如果電話號碼中包含有區號,那么區號為三位或四位
(4)區號用"("、")"或"-"和其他部分隔開
(5)移動電話號碼為11或12位,如果為12位,那么第一位為0
(6)11位移動電話號碼的第一位和第二位為"13"
(7)12位移動電話號碼的第二位和第三位為"13"
根據這幾條規則,可以與出以下正則表達式:
(^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)
<script language="java script">
function PhoneCheck(s) {
var str=s;
var reg=/(^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)/
alert(reg.test(str));
}
</script>
<input type=text name="iphone">
<input type=button onclick="PhoneCheck(document.all.iphone.value)" value="Check">
具有在輸入非數字字符不回顯的效果,即對非數字字符的輸入不作反應。
function numbersonly(field,event){
var key,keychar;
if(window.event){
key = window.event.keyCode;
}
else if (event){
key = event.which;
}
else{
return true
}
keychar = String.fromCharCode(key);
if((key == null)||(key == 0)||(key == 8)||(key == 9)||(key == 13)||(key == 27)){
return true;
}
else if(("0123456789.").indexOf(keychar)>-1){
window.status = "";
return true;
}
else {
window.status = "Field excepts numbers only";
return false;
}
}
驗證ip
str=document.RegExpDemo.txtIP.value;
if(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/.test(str)==false)
{
window.alert('錯誤的IP地址格式');
document.RegExpDemo.txtIP.select();
document.RegExpDemo.txtIP.focus();
return;
}
if(RegExp.$1<1 || RegExp.$1>254||RegExp.$2<0||RegExp.$2>254||RegExp.$3<0||RegExp.$3>254||RegExp.$4<1||RegExp.$4>254)
{
window.alert('錯誤的IP地址');
document.RegExpDemo.txtIP.select();
document.RegExpDemo.txtIP.focus();
return;
}
//剔除 如 010.020.020.03 前面 的0
var str=str.replace(/0(\d)/g,"$1");
str=str.replace(/0(\d)/g,"$1");
window.alert(str);
//一下是取數據的類
//Obj參數指定數據的來源(限定Table),默認第一行為字段名稱行
//GetTableData類提供MoveNext方法,參數是表的行向上或向下移動的位數,正數向下移動,負數向上.
//GetFieldData方法獲得指定的列名的數據
//S ort_desc方法對指定的列按降序排列
//S ort_asc方法對指定的列按升序排列
//GetData方法返回字段值為特定值的數據數組,提供數據,可以在外部進行其他處理
//Delete方法刪除當前記錄,數組減少一行
//初始化,Obj:table的名字,Leftlen:左面多余數據長度,Rightlen:右面多余數據長度,
function GetTableData(Obj,LeftLen,RightLen){
var MyObj=document.all(Obj);
var iRow=MyObj.rows.length;
var iLen=MyObj.rows[0].cells.length;
var i,j;
TableData=new Array();
f or (i=0;i< iRow;i++){
TableData[i]=new Array();
f or (j=0;j<iLen;j++){
TableStr=MyObj.rows(i).cells(j).innerText;
TableStr=TableStr.substring(LeftLen, TableStr.length-RightLen).Trim();
TableStr=TableStr.replace(/ /gi,"").replace(/\r\n/ig,"");
TableData[i][j]=TableStr;
}
}
this.TableData=TableData;
this.cols=this.TableData[0].length;
this.rows=this.TableData.length;
this.rowindex=0;
}
function movenext(Step){
if (this.rowindex>=this.rows){
return
}
if (Step=="" || typeof(Step)=="undefined") {
if (this.rowindex<this.rows-1)
this.rowindex++;
return;
}
else{
if (this.rowindex + Step<=this.rows-1 && this.rowindex + Step>=0 ){
this.rowindex=this.rowindex + Step;
}
else
{
if (this.rowindex + Step<0){
this.rowindex= 0;
return;
}
if (this.rowindex + Step>this.rows-1){
this.rowindex= this.rows-1;
return;
}
}
}
}
function getfielddata(Field){
var colindex=-1;
var i=0;
if (typeof(Field) == "number"){
colindex=Field;
}
else
{
f or (i=0;i<this.cols && this.rowindex<this.rows ;i++){
if (this.TableData[0][i]==Field){
colindex=i;
break;
}
}
}
if (colindex!=-1) {
return this.TableData[this.rowindex][colindex];
}
}
function s ort_desc(){//降序
var colindex=-1;
var highindex=-1;
desc_array=new Array();
var i,j;
f or (n=0; n<arguments.length; n++){
Field=arguments[arguments.length-1-n];
f or (i=0;i<this.cols;i++){
if (this.TableData[0][i]==Field){
colindex=i;
break;
}
}
if ( colindex==-1 )
return;
else
{
desc_array[0]=this.TableData[0];
f or(i=1;i<this.rows;i++){
desc_array[i]=this.TableData[1];
highindex=1;
f or(j=1;j<this.TableData.length;j++){
if (desc_array[i][colindex]<this.TableData[j][colindex]){
desc_array[i]=this.TableData[j];
highindex=j;
}
}
if (highindex!=-1)
this.TableData=this.TableData.slice(0,highindex).concat(this.TableData.slice(highindex+1,this.TableData.length));
}
}
this.TableData=desc_array;
}
return;
}
function s ort_asc(){//升序
var colindex=-1;
var highindex=-1;
var i,j;
f or (n=0; n<arguments.length; n++){
asc_array=new Array();
Field=arguments[arguments.length-1-n];
f or (i=0;i<this.cols;i++){
if (this.TableData[0][i]==Field){
colindex=i;
break;
}
}
if ( colindex==-1 )
return;
else
{
asc_array[0]=this.TableData[0];
f or(i=1;i<this.rows;i++){
asc_array[i]=this.TableData[1];
highindex=1;
f or(j=1;j<this.TableData.length;j++){//找出最小的列值
if (asc_array[i][colindex]>this.TableData[j][colindex]){
asc_array[i]=this.TableData[j];
highindex=j;
}
}
if (highindex!=-1)
this.TableData=this.TableData.slice(0,highindex).concat(this.TableData.slice(highindex+1,this.TableData.length));
}
}
this.TableData=asc_array;
}
return;
}
function getData(Field,FieldValue){
var colindex=-1;
var i,j;
GetData=new Array();
if (typeof(Field)=="undefined" || typeof(FieldValue)=="undefined" ){
return this.TableData;
}
f or(j=0;j<this.cols;j++){
if (this.TableData[0][j]==Field){
colindex=j;
}
}
if (colindex!=-1){
f or(i=1;i<this.rows;i++){
if (this.TableData[i][colindex]==FieldValue){
GetData[i]=new Array();
GetData[i]=this.TableData[i];
}
}
}
return GetData;
}
function DeletE(){
this.TableData=this.TableData.slice(0,this.rowindex).concat(this.TableData.slice(this.rowindex+1,this.TableData.length));
this.rows=this.TableData.length;
return;
}
function updateField(Field,FieldValue){
var colindex=-1;
var i=0;
if (typeof(Field) == "number"){
colindex=Field;
}
else
{
f or (i=0;i<this.cols && this.rowindex<this.rows ;i++){
if (this.TableData[0][i]==Field){
colindex=i;
break;
}
}
}
if (colindex!=-1) {
this.TableData[this.rowindex][colindex]=FieldValue;
}
}
function movefirst(){
this.rowindex=0;
}
function movelast(){
this.rowindex=this.rows-1;
}
function String.prototype.Trim() {return this.replace(/(^\s*)|(\s*$)/g,"");}
GetTableData.prototype.MoveNext = movenext;
GetTableData.prototype.GetFieldData = getfielddata;
GetTableData.prototype.S ort_asc = s ort_asc;
GetTableData.prototype.S ort_desc = s ort_desc;
GetTableData.prototype.GetData = getData;
GetTableData.prototype.Delete = DeletE;
GetTableData.prototype.UpdateField = updateField;
GetTableData.prototype.MoveFirst = movefirst;
具體的例子:http://202.119.73.208/NetEAn/com/test/jsprint.htm
在每個文本框的onblur事件中調用校驗代碼,并且每個文本框中onKeyDown事件中寫一個enter轉tab函數
//回車鍵換為tab
function enterToTab()
{
if(event.srcElement.type != 'button' && event.srcElement.type != 'textarea'
&& event.keyCode == 13)
{
event.keyCode = 9;
}
}
有時候還需要自由編輯表格---
給大家一個自由編輯表格的小例子,寫的有點亂,呵呵:)
//===============================start================================
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=gb2312">
<TITLE>測試修改表格</TITLE>
<STYLE>
/*提示層的樣式*/
div
{
BORDER-RIGHT: #80c144 1px solid;
BORDER-TOP: #80c144 1px solid;
VISIBILITY: hidden;
BORDER-LEFT: #80c144 1px solid;
CURSOR: default;
LINE-HEIGHT: 20px;
BORDER-BOTTOM: #80c144 1px solid;
FONT-FAMILY: 宋體;
font-size:12px;
POSITION: absolute;
BACKGROUND-COLOR: #f6f6f6;
TOP:30px;
LEFT:30px;
}
/*tr的樣式*/
tr
{
font-family: "宋體";
col or: #000000;
background-col or: #C1DBF5;
font-size: 12px
}
/*table腳注樣式*/
.TrFoot
{
FONT-SIZE: 12px;
font-family:"宋體", "Verdana", "Arial";
BACKGROUND-COLOR: #6699CC;
COLOR:#FFFFFF;
height: 25;
}
/*trhead屬性*/
.TrHead
{
FONT-SIZE: 13px;
font-family:"宋體", "Verdana", "Arial";
BACKGROUND-COLOR: #77AADD;
COLOR:#FFFFFF;
height: 25;
}
/*文本框樣式*/
INPUT
{
BORDER-COLOR: #AACEF7 #AACEF7 #AACEF7 #AACEF7;
BORDER-RIGHT: 1px solid;
BORDER-TOP: 1px solid;
BORDER-LEFT: 1px solid;
BORDER-BOTTOM: 1px solid;
FONT-SIZE: 12px;
FONT-FAMILY: "宋體","Verdana";
col or: #000000;
BACKGROUND-COLOR: #E9EFF5;
}
/*button樣式*/
button
{
BORDER-COLOR: #AACEF7 #AACEF7 #AACEF7 #AACEF7;
BACKGROUND-COLOR: #D5E4F3;
CURSOR: hand;
FONT-SIZE:12px;
BORDER-RIGHT: 1px solid;
BORDER-TOP: 1px solid;
BORDER-LEFT: 1px solid;
BORDER-BOTTOM: 1px solid;
COLOR: #000000;
}
</STYLE>
</HEAD>
<BODY>
<SCRIPT language = "java script">
<!--全局變量
//標志位,值為false代表未打開一個編輯框,值為true為已經打開一個編輯框開始編輯
var editer_table_cell_tag = false;
//開啟編輯功能標志,值為true時為允許編輯
var run_edit_flag = false;
//-->
</SCRIPT>
<SCRIPT language = "java script">
<!--
/**
* 編輯表格函數
* 單擊某個單元格可以對里面的內容進行自由編輯
* @para tableID 為要編輯的table的id
* @para noEdiID 為不要編輯的td的ID,比如說table的標題
* 可以寫為<TD id="no_editer">自由編輯表格</TD>
* 此時該td不可編輯
*/
function editerTableCell(tableId,noEdiId)
{
var tdObject = event.srcElement;
var tObject = ((tdObject.parentNode).parentNode).parentNode;
if(tObject.id == tableId &&tdObject.id != noEdiId&&editer_table_cell_tag == false && run_edit_flag == true)
{
tdObject.innerHTML = "<input type=text id=edit_table_txt name=edit_table_txt value="+tdObject.innerText+" size='15' onKeyDown='enterToTab()'> <input type=button value=' 確定 ' onclick='certainEdit()'>";
edit_table_txt.focus();
edit_table_txt.select();
editer_table_cell_tag = true;
//修改按鈕提示信息
editTip.innerText = "請先點確定按鈕確認修改!";
}
else
{
return false;
}
}
/**
* 確定修改
*/
function certainEdit()
{
var bObject = event.srcElement;
var tdObject = bObject.parentNode;
var txtObject = tdObject.firstChild;
tdObject.innerHTML = txtObject.value;
//代表編輯框已經關閉
editer_table_cell_tag = false;
//修改按鈕提示信息
editTip.innerText = "請單擊某個單元格進行編輯!";
}
function enterToTab()
{
if(event.srcElement.type != 'button' && event.srcElement.type != 'textarea'
&& event.keyCode == 13)
{
event.keyCode = 9;
}
}
/**
* 控制是否編輯
*/
function editStart()
{
if(event.srcElement.value == "開始編輯")
{
event.srcElement.value = "編輯完成";
run_edit_flag = true;
}
else
{
//如果當前沒有編輯框,則編輯成功,否則,無法提交
//必須按確定按鈕后才能正常提交
if(editer_table_cell_tag == false)
{
alert("編輯成功結束!");
event.srcElement.value = "開始編輯";
run_edit_flag = false;
}
}
}
/**
* 根據不同的按鈕提供不同的提示信息
*/
function showTip()
{
if(event.srcElement.value == "編輯完成")
{
editTip.style.top = event.y + 15;
editTip.style.left = event.x + 12;
editTip.style.visibility = "visible";
}
else
{
editTip.style.visibility = "hidden";
}
}
-->
</SCRIPT>
<TABLE id="editer_table" width="100%" align="center"
onclick="editerTableCell('editer_table','no_editer')">
<TR class="TrHead">
<TD colspan="3" align="center" id="no_editer">自由編輯表格</TD>
</TR>
<TR>
<TD width="33%">單擊開始編輯按鈕,然后點擊各單元格編輯</TD>
<TD width="33%">2</TD>
<TD width="33%">3</TD>
</TR>
<TR>
<TD width="33%">4</TD>
<TD width="33%">5</TD>
<TD width="33%">6</TD>
</TR>
<TR>
<TD width="33%">one</TD>
<TD width="33%">two</TD>
<TD width="33%">three</TD>
</TR>
<TR>
<TD width="33%">four</TD>
<TD width="33%">five</TD>
<TD width="33%">six</TD>
</TR>
<TR class="TrFoot">
<TD colspan="3" align="center" id="no_editer">
<INPUT type="button" class="bt" value="開始編輯" onClick="editStart()" onMouseOver="showTip()" onMouseMove="showTip()" onMouseOut="editTip.style.visibility = 'hidden';">
</TD>
</TR>
</TABLE>
</BODY>
<DIV id="editTip">請單擊某個單元格進行編輯!</DIV>
</HTML>
posted @
2005-04-16 14:35 Stephen 閱讀(337) |
評論 (0) |
編輯 收藏
正則表達式從左到右進行計算,并遵循優先級順序,這與算術表達式非常類似。
下表從最高到最低說明了各種正則表達式運算符的優先級順序:
運算符 |
說明 |
\ |
轉義符 |
(), (?:), (?=), [] |
括號和中括號 |
*, +, ?, {n}, {n,}, {n,m} |
限定符 |
^, $, \anymetacharacter, anycharacter |
定位點和序列 |
| |
替換 |
字符的優先級比替換運算符高,替換運算符允許“m|food”與“m”或“food”匹配。若要匹配“mood”或“food”,請使用括號創建子表達式,從而產生“(m|f)ood”。
posted @
2005-04-16 14:12 Stephen 閱讀(353) |
評論 (0) |
編輯 收藏
字符 |
說明 |
\ |
將下一字符標記為特殊字符、文本、反向引用或八進制轉義符。例如,“n”匹配字符“n”。“\n”匹配換行符。序列“\\”匹配“\”,“\(”匹配“(”。 |
^ |
匹配輸入字符串開始的位置。如果設置了 RegExp 對象的 Multiline 屬性,^ 還會與“\n”或“\r”之后的位置匹配。 |
$ |
匹配輸入字符串結尾的位置。如果設置了 RegExp 對象的 Multiline 屬性,$ 還會與“\n”或“\r”之前的位置匹配。 |
* |
零次或多次匹配前面的字符或子表達式。例如,zo* 匹配“z”和“zoo”。* 等效于 {0,}。 |
+ |
一次或多次匹配前面的字符或子表達式。例如,“zo+”與“zo”和“zoo”匹配,但與“z”不匹配。+ 等效于 {1,}。 |
? |
零次或一次匹配前面的字符或子表達式。例如,“do(es)?”匹配“do”或“does”中的“do”。? 等效于 {0,1}。 |
{n} |
n 是非負整數。正好匹配 n 次。例如,“o{2}”與“Bob”中的“o”不匹配,但與“food”中的兩個“o”匹配。 |
{n,} |
n 是非負整數。至少匹配 n 次。例如,“o{2,}”不匹配“Bob”中的“o”,而匹配“foooood”中的所有 o。'o{1,}' 等效于 'o+'。'o{0,}' 等效于 'o*'。 |
{n,m} |
m 和 n 是非負整數,其中 n <= m。至少匹配 n 次,至多匹配 m 次。例如,“o{1,3}”匹配“fooooood”中的頭三個 o。'o{0,1}' 等效于 'o?'。注意:您不能將空格插入逗號和數字之間。 |
? |
當此字符緊隨任何其他限定符(*、+、?、{n}、{n,}、{n,m})之后時,匹配模式是“非貪心的”。“非貪心的”模式匹配搜索到的、盡可能短的字符串,而默認的“貪心的”模式匹配搜索到的、盡可能長的字符串。例如,在字符串“oooo”中,“o+?”只匹配單個“o”,而“o+”匹配所有“o”。 |
. |
匹配除“\n”之外的任何單個字符。若要匹配包括“\n”在內的任意字符,請使用諸如“[\s\S]”之類的模式。 |
(pattern) |
匹配 pattern 并捕獲該匹配的子表達式。可以使用 $0...$9 屬性從結果“匹配”集合中檢索捕獲的匹配。若要匹配括號字符 ( ),請使用“\(”或者“\)”。 |
(?:pattern) |
匹配 pattern 但不捕獲該匹配的子表達式,即它是一個非捕獲匹配,不存儲供以后使用的匹配。這對于用“或”字符 (|) 組合模式部件的情況很有用。例如,與“industry|industries”相比,“industr(?:y| ies)”是一個更加經濟的表達式。 |
(?=pattern) |
執行正向預測先行搜索的子表達式,該表達式匹配處于匹配 pattern 的字符串的起始點的字符串。它是一個非捕獲匹配,即不能捕獲供以后使用的匹配。例如,“Windows (?=95| 98| NT| 2000)”與“Windows 2000”中的“Windows”匹配,但不與“Windows 3.1”中的“Windows”匹配。預測先行不占用字符,即發生匹配后,下一匹配的搜索緊隨上一匹配之后,而不是在組成預測先行的字符后。 |
(?!pattern) |
執行反向預測先行搜索的子表達式,該表達式匹配不處于匹配 pattern 的字符串的起始點的搜索字符串。它是一個非捕獲匹配,即不能捕獲供以后使用的匹配。例如,“Windows (?!95| 98| NT| 2000)”與“Windows 3.1”中的“Windows”匹配,但不與“Windows 2000”中的“Windows”匹配。預測先行不占用字符,即發生匹配后,下一匹配的搜索緊隨上一匹配之后,而不是在組成預測先行的字符后。 |
x| y |
與 x 或 y 匹配。例如,“z| food”與“z”或“food”匹配?!?z| f)ood”與“zood”或“food”匹配。 |
[xyz] |
字符集。匹配包含的任一字符。例如,“[abc]”匹配“plain”中的“a”。 |
[^xyz] |
反向字符集。匹配未包含的任何字符。例如,“[^abc]”匹配“plain”中的“p”。 |
[a-z] |
字符范圍。匹配指定范圍內的任何字符。例如,“[a-z]”匹配“a”到“z”范圍內的任何小寫字母。 |
[^a-z] |
反向范圍字符。匹配不在指定的范圍內的任何字符。例如,“[^a-z]”匹配任何不在“a”到“z”范圍內的任何字符。 |
\b |
匹配一個字邊界,即字與空格間的位置。例如,“er\b”匹配“never”中的“er”,但不匹配“verb”中的“er”。 |
\B |
非字邊界匹配?!癳r\B”匹配“verb”中的“er”,但不匹配“never”中的“er”。 |
\cx |
匹配由 x 指示的控制字符。例如,\cM 匹配一個 Control-M 或回車符。x 的值必須在 A-Z 或 a-z 之間。如果不是這樣,則假定 c 就是“c”字符本身。 |
\d |
數字字符匹配。等效于 [0-9]。 |
\D |
非數字字符匹配。等效于 [^0-9]。 |
\f |
換頁符匹配。等效于 \x0c 和 \cL。 |
\n |
換行符匹配。等效于 \x0a 和 \cJ。 |
\r |
匹配一個回車符。等效于 \x0d 和 \cM。 |
\s |
匹配任何空白字符,包括空格、制表符、換頁符等。與 [ \f\n\r\t\v] 等效。 |
\S |
匹配任何非空白字符。等價于 [^ \f\n\r\t\v]。 |
\t |
制表符匹配。與 \x09 和 \cI 等效。 |
\v |
垂直制表符匹配。與 \x0b 和 \cK 等效。 |
\w |
匹配任何字類字符,包括下劃線。與“[A-Za-z0-9_]”等效。 |
\W |
任何非字字符匹配。與“[^A-Za-z0-9_]”等效。 |
\xn |
匹配 n,此處的 n 是一個十六進制轉義碼。十六進制轉義碼必須正好是兩位數長。例如,“\x41”匹配“A”?!癨x041”與“\x04”&“1”等效。允許在正則表達式中使用 ASCII 代碼。 |
\num |
匹配 num,此處的 num 是一個正整數。到捕獲匹配的反向引用。例如,“(.)\1”匹配兩個連續的相同字符。 |
\n |
標識一個八進制轉義碼或反向引用。如果 \n 前面至少有 n 個捕獲子表達式,那么 n 是反向引用。否則,如果 n 是八進制數 (0-7),那么 n 是八進制轉義碼。 |
\nm |
標識一個八進制轉義碼或反向引用。如果 \nm 前面至少有 nm 個捕獲子表達式,那么 nm 是反向引用。如果 \nm 前面至少有 n 個捕獲,那么 n 是反向引用,后面跟 m。如果前面的條件均不存在,那么當 n 和 m 是八進制數 (0-7) 時,\nm 匹配八進制轉義碼 nm。 |
\nml |
當 n 是八進制數 (0-3),m 和 l 是八進制數 (0-7) 時,匹配八進制轉義碼 nml。 |
\un |
匹配 n,其中 n 是以四位十六進制數表示的 Unicode 字符。例如,\u00A9 匹配版權符號 (?)。 |
posted @
2005-04-16 14:11 Stephen 閱讀(245) |
評論 (0) |
編輯 收藏