posted @ 2010-07-01 16:47 yuyu 閱讀(385) | 評論 (0) | 編輯 收藏
報表文件有錯:Errors were encountered when compiling report expressions class file: D:\server\tomcat5.0.28\bin\mytest_1212552692656_858465.java:4: 軟件包 net.sf.jasperreports.engine 不存在 import net.sf.jasperreports.engine.*; ^ D:\server\tomcat5.0.28\bin\mytest_1212552692656_858465.java:5: 軟件包 net.sf.jasperreports.engine.fill 不存在 import net.sf.jasperreports.engine.fill.*; ^ D:\server\tomcat5.0.28
找了很長時間最后終于搞定,強行指定編譯的classpath
String classPath = "yourpath";
JRProperties.setProperty(JRProperties.COMPILER_CLASSPATH, classPath);
posted @ 2008-06-04 16:48 yuyu 閱讀(1184) | 評論 (1) | 編輯 收藏
問題一:
網頁打開之后長時間未響應,這個問題在郵件中已經分析過了,這里就不重復了。
問題二:
mssql訪問不到,telnet不通,netstat也沒有程序監聽,最后打sp4補丁搞好了。也算是解決了吧,這種問題以后還是要記得先查看版本信息。不過我記得就算是沒有sp4也只是部分功能不能用,不會導致端口都不監聽了吧。
問題三:
mysql編碼問題,這兩天被編碼的問題搞的很郁悶。mysql的確是很奇怪,字符編碼到處都可以設。系統默認編碼,數據庫編碼,表編碼,表字段編碼。這樣的結果常常導致在導數據或者插入數據的時候數據庫出現大量亂碼,更奇怪的是用第三方工具查看的數據庫是亂碼,但是使用程序取出來的時候又是好的,原來第三方的工具編碼也有問題。
posted @ 2008-03-04 12:12 yuyu 閱讀(179) | 評論 (0) | 編輯 收藏
主要介紹了無需Resin插件如何在Eclipse運行和調試WEB應用程序。
因為無需插件,純JAVA環境運行,步驟可能多一點。
下面以Eclipse3.0.1、Resin3.0.12為例說明如何配置,相關配置內容為僅供參考。
1、建立基本結構
首先在Eclipse中新建一個項目pjt,結構如下:
|
|--src
|
|--context
|
|-- WEB-INF
|
|--classes
|--lib
src: 類目錄
context: WEB應用程序文檔目錄,即web-app的document-directory
WEB-INF: 你的*.xml、*.tld等等文檔就在這里存放。
classes: 類編譯輸出文件夾
lib: 類庫的存放目錄,存放相應APPLICATION運行所需要的類庫
以上為一大致結構,相信稍微做過開發的朋友都明白。
2、配置項目屬性
在該項目屬性中配置:
該項目JAVA文件編譯的缺省輸出文件夾為上面的classes目錄。
在LIB列表中添加編譯需要的jar。
具體的配置看個人情況而定了。
3、配置Resin的conf
拷貝一份resin安裝目錄conf目錄下的resin.conf,命名為test.conf
編輯其中的內容,默認也可,在其后面的</host>上面添加一行:
<web-app id=/pjt document-directory="d:\pjt\webapp"/>
這是最簡配置,詳細參數自己可以定制。
4、配置Eclipse的運行
打開Eclipse的“運行”菜單,選擇“運行”,如果你的是英文,應該都是RUN。:)
選擇JAVA應用程序,點擊下面的新建按鈕,新建一個運行項目。
名稱自己填寫,我們暫時以RunTest來命名這個例子。然后配置其中的相關屬性。
(1)主要
項目:我們選擇剛剛新建的pjt項目。
Main類:填寫com.caucho.server.resin.Resin
注意,如果你用的是resin2.1.5系列應該是 com.caucho.server.http.HttpServer
(2)自變量
程序自變量:-conf "d:\resin-3.0.12\conf\test.conf"
VM自變量:
-Dresin.home="G:\workspace\resin-3.0.12"
-Djava.util.logging.manager=com.caucho.log.LogManagerImpl
如果是開發Tapestry,需要page可以自動更新,那再添加:
-Dorg.apache.tapestry.enable-reset-service=true
-Dorg.apache.tapestry.disable-caching=true
(3)JRE:選擇自己系統安裝的JRE。
(4)類路徑:添加Resin home的lib下的jar。
其它項目默認或根據情況自己定制即可。
配置好之后點擊“應用”按鈕,然后點擊下面的“運行”按鈕即可運行該項目。:)
以后你會發現工具條上運行按鈕的下拉列表里面多了一個RunTest。
這樣以后通過工具條上的運行和調試按鈕就可以來運行這個pjt項目了。
轉自:http://www.web521.com/web/554468/T642458.shtml
posted @ 2008-03-03 11:43 yuyu 閱讀(418) | 評論 (0) | 編輯 收藏
TCP/IP通信程序設計的豐富多樣性
剛接觸TCP/IP通信設計的人根據范例可以很快編出一個通信程
序,據此一些人可能會認為TCP/IP編程很簡單。其實不然,
TCP/IP編程具有較為豐富的內容。其編程的豐富性主要體現在
通信方式和報文格式的多樣性上。
一。通信方式
主要有以下三大類:
(一)SERVER/CLIENT方式
1.一個Client方連接一個Server方,或稱點對點(peer to peer):
2.多個Client方連接一個Server方,這也是通常的并發服務器方式。
3.一個Client方連接多個Server方,這種方式很少見,主要
用于一個客戶向多個服務器發送請求情況。
(二)連接方式
1.長連接
Client方與Server方先建立通訊連接,連接建立后不斷開,
然后再進行報文發送和接收。這種方式下由于通訊連接一直
存在,可以用下面命令查看連接是否建立:
netstat –f inet|grep 端口號(如5678)。
此種方式常用于點對點通訊。
2.短連接
Client方與Server每進行一次報文收發交易時才進行通訊連
接,交易完畢后立即斷開連接。此種方式常用于一點對多點
通訊,比如多個Client連接一個Server.
(三)發送接收方式
1.異步
報文發送和接收是分開的,相互獨立的,互不影響。這種方
式又分兩種情況:
(1)異步雙工:接收和發送在同一個程序中,有兩個不同的
子進程分別負責發送和接收
(2)異步單工:接收和發送是用兩個不同的程序來完成。
2.同步
報文發送和接收是同步進行,既報文發送后等待接收返回報文。
同步方式一般需要考慮超時問題,即報文發上去后不能無限等
待,需要設定超時時間,超過該時間發送方不再等待讀返回報
文,直接通知超時返回。
實際通信方式是這三類通信方式的組合。比如一般書上提供的
TCP/IP范例程序大都是同步短連接的SERVER/CLIENT程序。有的
組合是基本不用的,比較常用的有價值的組合是以下幾種:
同步短連接Server/Client
同步長連接Server/Client
異步短連接Server/Client
異步長連接雙工Server/Client
異步長連接單工Server/Client
其中異步長連接雙工是最為復雜的一種通信方式,有時候經
常會出現在不同銀行或不同城市之間的兩套系統之間的通信。
比如金卡工程。由于這幾種通信方式比較固定,所以可以預
先編制這幾種通信方式的模板程序。
二.報文格式
通信報文格式多樣性更多,相應地就必須設計對應的讀寫報文的接
收和發送報文函數。
(一)阻塞與非阻塞方式
1.非阻塞方式
讀函數不停地進行讀動作,如果沒有報文接收到,等待一段時間后
超時返回,這種情況一般需要指定超時時間。
2.阻塞方式
如果沒有報文接收到,則讀函數一直處于等待狀態,直到有報文到達。
(二)循環讀寫方式
1.一次直接讀寫報文
在一次接收或發送報文動作中一次性不加分別地全部讀取或全部
發送報文字節。
2.不指定長度循環讀寫
這一般發生在短連接進程中,受網絡路由等限制,一次較長的報
文可能在網絡傳輸過程中被分解成了好幾個包。一次讀取可能不
能全部讀完一次報文,這就需要循環讀報文,直到讀完為止。
3.帶長度報文頭循環讀寫
這種情況一般是在長連接進程中,由于在長連接中沒有條件能夠
判斷循環讀寫什么時候結束,所以必須要加長度報文頭。讀函數
先是讀取報文頭的長度,再根據這個長度去讀報文.實際情況中,
報頭的碼制格式還經常不一樣,如果是非ASCII碼的報文頭,還必須
轉換成ASCII,常見的報文頭碼制有:
(1)n個字節的ASCII碼
(2)n個字節的BCD碼
(3)n個字節的網絡整型碼
以上是幾種比較典型的讀寫報文方式,可以與通信方式模板一起
預先提供一些典型的API讀寫函數。當然在實際問題中,可能還
必須編寫與對方報文格式配套的讀寫API.
在實際情況中,往往需要把我們自己的系統與別人的系統進行連接,
有了以上模板與API,可以說連接任何方式的通信程序都不存在問題。
posted @ 2007-12-10 10:35 yuyu 閱讀(3440) | 評論 (0) | 編輯 收藏
MYSQL索引容易因意外重啟等原因損壞,下面是轉載的一篇文章,有碰到的不妨先試下文中講述的方法。
前幾天因為mysql數據庫部分數據損壞原因,我嘗試了下恢復數據,之后整理以下文檔,供各位參考,
以備各位同事以后如有類似問題,可以少走些彎路,盡快解決問題。
環境:windows2003
數據庫:mysql
損壞數據文件名:function_products
將數據庫內容物理文件直接導入到mysqldata下,每只表各3個文件,依次分別為:.frm .MYD .MYI
首先我第一想到的是去網上搜索,尋找類似的工具,試圖通過工具來恢復已損壞的文件,于是我在GOOGLE上查找,
找到一款名為MySQLRecovery的工具,安裝后我用其進行恢復,只可惜效果太不理想,幾十M大的數據文件,恢復
之后它提示我竟然只有幾十K,令我吐血...
我又想到了mysql下應有自己本身的修復程序等,于是想通過其來進行恢復,心想應不會太差勁吧,在網上查找了
資料,提示:
由于臨時斷電,使用kill -9中止MySQL服務進程,或者是mysql正在高速運轉時進行強制備份操作時等,
所有的這些都可能會毀壞MySQL的數據文件。如果在被干擾時,服務正在改變文件,文件可能會留下錯誤的
或不一致的狀態。因為這樣的毀壞有時是不容易被發現的,當你發現這個錯誤時可能是很久以后的事了。
于是,當你發現這個問題時,也許所有的備份都有同樣的錯誤。
我想我現在碰到的問題可能是這個問題,因為備份的數據也是有部分損壞的數據,所以導致不能完全運行,
意識到myisamchk程序對用來檢查和修改的MySQL數據文件的訪問應該是唯一的。如果MySQL服務正在使用
某一文件,并對myisamchk正在檢查的文件進行修改,myisamchk會誤以為發生了錯誤,并會試圖進行修復--
這將導致MySQL服務的崩潰!這樣,要避免這種情況的發生,通常我們需要在工作時關閉
MySQL服務。作為選擇,
你也可以暫時關閉服務以制作一個文件的拷貝,然后在這個拷貝上工作。當你做完了以后,重新關閉服務并使
用新的文件取代原來的文件(也許你還需要使用期間的變更日志)。
MySQL數據目錄不是太難理解的。每一個數據庫對應一個子目錄,每個子目錄中包含了對應于這個數據庫中的
數據表的文件。每一個數據表對應三個文件,它們和表名相同,但是具有不同的擴展名。tblName.frm文件是
表的定義,它保存了表中包含的數據列的內容和類型。tblName.MYD文件包含了表中的數據。tblName.MYI文件
包含了表的索引(例如,它可能包含lookup表以幫助提高對表的主鍵列的查詢)。
要檢查一個表的錯誤,只需要運行myisamchk(在MySQL的bin目錄下)并提供文件的位置和表名,或者是表的索引文件名:
% myisamchk /usr/local/mysql/var/dbName/tblName
% myisamchk /usr/local/mysql/var/dbName/tblName.MYI
上面的兩個命令都可以執行對指定表的檢查。要檢查數據庫中所有的表,可以使用通配符:
% myisamchk /usr/local/mysql/var/dbName/*.MYI
要檢查所有數據庫中的所有表,可以使用兩個通配符:
% myisamchk /usr/local/mysql/var/*/*.MYI
如果不帶任何選項,myisamchk將對表文件執行普通的檢查。如果你對一個表有懷疑,但是普通的檢查不能發現任何錯誤,你可以執行更徹底的檢查(但是也更慢!),這需要使用--extend-check選項:
% myisamchk --extend-check /path/to/tblName
對
錯誤的檢查是沒有破壞性的,這意味著你不必擔心執行對你的數據文件的檢查會使已經存在的問題變得更糟。另一方面,修復選項,雖然通常也是安全的,但是它對
你的數據文件的更改是無法撤消的。因為這個原因,我們強烈推薦你試圖修復一個被破壞的表文件時首先做個備份,并確保在制作這個備份之前你的MySQL服務
是關閉的。
我在win2003下通過命令提示符,輸入:
注:此為記錄我當時操作的全部過程
D:Documents and SettingsAdministrator>c:
C:>cd mysql
C:mysql>cd data
C:mysqldata>cd hw_enterprice
C:mysqldatahw_enterprice>myisamchk function_products.frm
'myisamchk' 不是內部或外部命令,也不是可運行的程序
或批處理文件。
C:mysqldatahw_enterprice>cd
C:>cd mysql
C:mysql>cd bin
注:查看myisamchk的幫助信息
C:mysqlin>myisamchk
myisamchk Ver 2.6 for Win95/Win98 at i32
By Monty, for your professional use
This software comes with NO WARRANTY: see the PUBLIC for details.
Description, check and repair of ISAM tables.
Used without options all tables on the command will be checked for errors
Usage: myisamchk [OPTIONS] tables[.MYI]
Global options:
-#, --debug=... Output debug log. Often this is 'd:t:o,filename'
-?, --help Display this help and exit.
-O, --set-variable var=option
Change the value of a variable. Please note that
this option is deprecated; you can set variables
directly with '--variable-name=value'.
-t, --tmpdir=path Path for temporary files
-s, --silent Only print errors. One can use two -s to make
myisamchk very silent
-v, --verbose Print more information. This can be used with
--description and --check. Use many -v for more verbosity!
-V, --version Print version and exit.
-w, --wait Wait if table is locked.
Check options (check is the default action for myisamchk):
-c, --check Check table for errors
-e, --extend-check Check the table VERY throughly. Only use this in
extreme cases as myisamchk should normally be able to
find out if the table is ok even without this switch
-F, --fast Check only tables that haven't been closed properly
-C, --check-only-changed
Check only tables that have changed since last check
-f, --force Restart with '-r' if there are any errors in the table.
States will be updated as with '--update-state'
-i, --information Print statistics information about table that is checked
-m, --medium-check Faster than extend-check, but only finds 99.99% of
all errors. Should be good enough for most cases
-U --update-state Mark tables as crashed if you find any errors
-T, --read-only Don't mark table as checked
Repair options (When using '-r' or '-o')
-B, --backup Make a backup of the .MYD file as 'filename-time.BAK'
--correct-checksum Correct checksum information for table.
-D, --data-file-length=# Max length of data file (when recreating data
file when it's full)
-e, --extend-check Try to recover every possible row from the data file
Normally this will also find a lot of garbage rows;
Don't use this option if you are not totally desperate.
-f, --force Overwrite old temporary files.
-k, --keys-used=# Tell MyISAM to update only some specific keys. # is a
bit mask of which keys to use. This can be used to
get faster inserts!
-r, --recover Can fix almost anything except unique keys that aren't
unique.
-n, --sort-recover Forces recovering with sorting even if the temporary
file would be very big.
-p, --parallel-recover
Uses the same technique as '-r' and '-n', but creates
all the keys in parallel, in different threads.
THIS IS ALPHA CODE. USE AT YOUR OWN RISK!
-o, --safe-recover Uses old recovery method; Slower than '-r' but can
handle a couple of cases where '-r' reports that it
can't fix the data file.
--character-sets-dir=...
Directory where character sets are
--set-character-set=name
Change the character set used by the index
-q, --quick Faster repair by not modifying the data file.
One can give a second '-q' to force myisamchk to
modify the original datafile in case of duplicate keys
-u, --unpack Unpack file packed with myisampack.
Other actions:
-a, --analyze Analyze distribution of keys. Will make some joins in
MySQL faster. You can check the calculated distribution
by using '--description --verbose table_name'.
-d, --description Prints some information about table.
-A, --set-auto-increment[=value]
Force auto_increment to start at this or higher value
If no value is given, then sets the next auto_increment
value to the highest used value for the auto key + 1.
-S, --sort-index Sort index blocks. This speeds up 'read-next' in
applications
-R, --sort-records=#
Sort records according to an index. This makes your
data much more localized and may speed up things
C:mysqlin>myisamchk c:mysqldatahw_enterpricefunction_products.frm
myisamchk: error: 'c:mysqldatahw_enterpricefunction_products.frm' is not a M
yISAM-table
C:mysqlin>myisamchk c:mysqldatahw_enterpricefunction_products.myi
Checking MyISAM file: c:mysqldatahw_enterpricefunction_products.myi
Data records: 85207 Deleted blocks: 39
myisamchk: warning: Table is marked as crashed
myisamchk: warning: 1 clients is using or hasn't closed the table properly
- check file-size
- check key delete-chain
- check record delete-chain
myisamchk: error: record delete-link-chain corrupted
- check index reference
- check data record references index: 1
- check data record references index: 2
- check data record references index: 3
- check record links
myisamchk: error: Wrong bytesec: 0-195-171 at linkstart: 841908
MyISAM-table 'c:mysqldatahw_enterpricefunction_products.myi' is corrupted
Fix it using switch "-r" or "-o"
繼續進行操作:
C:mysqlin>myisamchk --recover --quick c:mysqldatahw_enterpricefunction_p
roducts.myi
- check key delete-chain
- check record delete-chain
myisamchk: error: record delete-link-chain corrupted
myisamchk: error: Quick-recover aborted; Run recovery without switch 'q'
Updating MyISAM file: c:mysqldatahw_enterpricefunction_products.myi
MyISAM-table 'c:mysqldatahw_enterpricefunction_products.myi' is not fixed be
cause of errors
Try fixing it by using the --safe-recover (-o) or the --force (-f) option
系統提示我使用--safe-recover (-o) or the --force (-f) option進行修復操作,于是
C:mysqlin>myisamchk --safe-recover c:mysqldatahw_enterpricefunction_prod
ucts.myi
- recovering (with keycache) MyISAM-table 'c:mysqldatahw_enterpricefunction_
products.myi'
Data records: 85207
Wrong bytesec: 0-195-171 at 841908; Skipped
Data records: 85215
將修復后的物理文件復制到mysqldata下之后,通過phpMyAdmin進行訪問,OK正常!
本次數據修復操作成功,數據已被正常恢復,總計85215條記錄,其中恢復數據共計85207條。
總結本次經驗及查找資料,如下:
當你試圖修復一個被破壞的表的問題時,有三種修復類型。如果你得到一個錯誤信息指出一個臨時文件不能建立,刪除信息所指出的文件并再試一次--這通常是上一次修復操作遺留下來的。
這三種修復方法如下所示:
% myisamchk --recover --quick /path/to/tblName
% myisamchk --recover /path/to/tblName
% myisamchk --safe-recover /path/to/tblName
第一種是最快的,用來修復最普通的問題;而最后一種是最慢的,用來修復一些其它方法所不能修復的問題。
檢查和修復MySQL數據文件
如果上面的方法無法修復一個被損壞的表,在你放棄之前,你還可以試試下面這兩個技巧:
如
果你懷疑表的索引文件(*.MYI)發生了不可修復的錯誤,甚至是丟失了這個文件,你可以使用數據文件(*.MYD)和數據格式文件(*.frm)重新生
成它。首先制作一個數據文件(tblName.MYD)的拷貝。重啟你的MySQL服務并連接到這個服務上,使用下面的命令刪除表的內容:
mysql> DELETE FROM tblName;
在
刪除表的內容的同時,會建立一個新的索引文件。退出登錄并重新關閉服務,然后用你剛才保存的數據文件(tblName.MYD)覆蓋新的(空)數據文件。
最后,使用myisamchk執行標準的修復(上面的第二種方法),根據表的數據的內容和表的格式文件重新生成索引數據。
如果你的表的格式文件
(tblName.frm)丟失了或者是發生了不可修復的錯誤,但是你清楚如何使用相應的CREATE
TABLE語句來重新生成這張表,你可以重新生成一個新的.frm文件并和你的數據文件和索引文件(如果索引文件有問題,使用上面的方法重建一個新的)一
起使用。首先制作一個數據和索引文件的拷貝,然后刪除原來的文件(刪除數據目錄下有關這個表的所有記錄)。
啟動MySQL服務并使用當初的CREATE TABLE文件建立一個新的表。新的.frm文件應該可以正常工作了,但是最好你還是執行一下標準的修復(上面的第二種方法)。
如果有類似問題,建議自己先分析問題根源,查找資料,自己動手解決,不但可以多學更多知識技巧,更重要的是,自己也在解決問題的同時得到了快樂.
posted @ 2007-07-17 11:05 yuyu 閱讀(3381) | 評論 (0) | 編輯 收藏
|
|
IE & Netscape |
IE only |
1 |
居中 |
<center> OBJECT </center> |
|
2 |
form element 使用 |
所有<input>等要引用的元素,都放在一個<form></form>中 |
可以通過id直接訪問,不通過form |
3 |
元素的引用方法1 |
document.form_name.element_name document.form_name.element_name[i] document.form_name.elements[element_name] |
form_name.element_name form_name.all(element_name) form_name.elements(element_name) element_id |
4 |
全選文本框 |
document.form_name.textbox_name.focus() document.form_name.textbox_name.select() 注意:netscape6.1以上版本,可以不先focus |
document.form_name.textbox_name.select() (netscape中必須先focus) |
5 |
Table |
<table><tr><td><th>都有完整的結束標記</table></tr></td></th> |
缺少一些沒有關系 |
6 |
根據名字索引 |
無document.all,這是造成大部分javascript函數不能使用的原因;
document.getElementById(id) 可用,但是只是支持id,不支持按name索引
(如果要同時用element_name or id 索引,可以考慮使用util.asp加入的新函數: document_all(element_name_or_id) 見使用示例1) 注意:netscape4.8不支持document. GetElementById和document.all |
document.all(element_name_or_id)
|
7 |
關于CSS |
class=class_name (class_name區分大小寫, 而且不支持BORDER-COLLAPSE: collapse,這是造成界面難看的主要原因) .css中的第一個類不起作用 |
class=class_name(class_name不區分大小寫) |
8 |
|
低版本javascript中switch的能力很差,不支持變量case 注意:我測過nerscapte6.1以上版本,支持case |
|
9 |
元素引用2 |
引用元素的id時,區分大小寫 |
引用元素的id時,不區分大小寫 |
10 |
Cursor顯示手形 |
Cursor: pointer (ie6支持pointer; ie5以下不支持pointer) |
Cursor: hand |
11 |
innerText |
用innerHTML代替innerText netscape6.0+不支持innerText |
|
12 |
<Caption align=left></caption>(table的屬性) |
對于netscape,Caption出現在table的左側,如附圖1 |
對于ie,Caption出現在table的上方左側, 如附圖2 |
13 |
<col> |
對于netscape,<col>的顯示屬性不會影響到所對應的其他列 |
對于ie,<col>的顯示屬性會影響到所對應的其他列 |
14 |
元素引用3 |
元素不是在form內時,引用元素使用document.getElementById("tblRole"). |
Window.tblRole在ie可以. |
15 |
自定義屬性的使用. |
有些界面上使用如<tr prj_code=’’>這樣的自定義屬性方式來保存值,netscape不支持tr.prj_code取值.需用objElm.attributes.getNamedItem(strAtrName).value. 注意:util.asp里已經寫了function GetElementAttribute(objElm,strAtrName),可以直接調用. |
Tr.prj_code可以取到值. |
16 |
事件event及取事件源元素 |
Netscape用”事件.target”而不支持event. SrcElement取事件源元素. Netscape也不能用event直接得到事件,可以考慮以“觸發事件時將event傳到javascript的方式得到事件”. 注意:util.asp里已經寫了event_SrcElement(ObjEvent)來獲得事件源元素. 觸發事件的方法如: <input type=button onclick=”invokeClick(event);”> |
Event. SrcElement |
17 |
Form |
NetScape中必須使用document.FormName, |
IE中可以使用document.FormName和 Window.FormName |
18 |
對表格的操作 |
TableId.rows[i].cells[i].childNodes[i] Netscpate里不能使用 ( ) |
TableId.rows[i].cells[i].childNodes[i] TableId.rows(i).cells(i).childNodes(i) |
19 |
TableId.rows[i].cells[i].childNodes[i].length不同的問題
|
子節點類型有2種,一種是element node;(nodeType=1),另一種是text node(nodeType = 3),可以遍歷所有子節點,把所有的text node刪掉,也可以修改html代碼,把多余的空格刪掉 方法一: var tbl1 = document.getElementById(“table1”); for (I=0;I<tbl1.childNodes.length) { var temp = tbl1.childNodes[i]; if (temp.nodeType == 3) { tbl1.removeChild(temp); } } |
|
20 |
parentElement |
ParentNode Netscape中不能使用parentElement |
ParentElement parentNode |
21 |
SrcElement |
IE用srcElement,netscape用target, ie不能用target |
|
22 |
Children,childNodes |
ChildNodes |
Children,childNodes |
23 |
Radiobutton在netscape中出現可以多選的問題 |
必須把radiobutton放入<form></form>中 |
|
24 |
Msxml.dll |
NETSCAPE: VarxmlDoc= document.implementation.createDocument("","",null);
var xmlServerHttp = new XMLHttpRequest();
|
IE: var xmlDoc = new ActiveXObject("Msxml2.DOMDocument");
var xmlServerHttp = new ActiveXObject("Msxml2.XMLHTTP"); |
Ie 支持:xmlDoc.load(filename) 和 xmlDoc.loadXML(string) NS只支持xmlDoc.load(filename)方法
if (navigator.appName =="Microsoft Internet Explorer") //IE { var xmlDoc = new ActiveXObject("Msxml2.DOMDocument"); var xmlServerHttp = new ActiveXObject("Msxml2.XMLHTTP"); xmlDoc.async = false; xmlDoc.loadXML(xmlStr); xmlServerHttp.open("POST",toUrl, false); xmlServerHttp.send(xmlStr); re = xmlServerHttp.responseText; } else { var xmlDoc = document.implementation.createDocument("","",null); var xmlServerHttp = new XMLHttpRequest(); var DOM = new DOMParser(); xmlDoc.async = false; var DOMdoc = DOM.parseFromString(xmlStr,"text/xml"); xmlDoc.load(DOMdoc); xmlServerHttp.open("POST",toUrl, false); xmlServerHttp.send(DOMdoc); re = xmlServerHttp.responseText; } SponOrgXMLforUpdate1 = “<sponsor_org name=’zwh’ age=’22’ />” if (navigator.appName =="Microsoft Internet Explorer") //IE { var xmlDoc = new ActiveXObject("Msxml2.DOMDocument"); xmlDoc.async=false; xmlDoc.loadXML(SponOrgXMLforUpdate1); node = xmlDoc.selectSingleNode("http://sponsor_org"); } else { var DOM = new DOMParser(); var xmlDoc = DOM.parseFromString(SponOrgXMLforUpdate1, 'text/xml'); var node = xmlDoc.getElementsByTagName('sponsor_org')[0]; } |
|||
|
|||
25 |
<tr id=”tr1” a=”a1” b=”b1”> |
取值: tr1.attributes.getNamedItem("a ").value tr1.attributes.getNamedItem("b ").value 賦值或者設置屬性 tr1.setAttribute(“a”,”a1”) tr1.setAttribute(“b”,”b1”);
|
Tr1.a Tr1.b |
26 |
給下來框新增一個option |
Var newOpt =new Option(text,value,false,false); Select.options[Select.options.length] = newopt; |
var oOption = document.createElement("OPTION"); oOption.text="" ; oOption.value=""; Select.add(oOption); |
27 |
刪除下拉框的某個option |
Select.options[i] = null; |
Select.options[i] = null; Select.options.remove(i); |
轉自 http://tb.blog.csdn.net/TrackBack.aspx?PostId=250206
posted @ 2007-06-19 11:41 yuyu 閱讀(363) | 評論 (1) | 編輯 收藏





















































































posted @ 2007-06-12 17:26 yuyu 閱讀(2672) | 評論 (1) | 編輯 收藏