2007年6月27日
- tar -xvzf db2exc_970_LNX_x86.tar.gz
tar -xvzf db2exc_nlpack_970_LNX_x86.tar.gz
網(wǎng)上說, 可以解壓到同一個目錄里面, 自動整合, 這個我沒有試驗, 今天晚上試試。 - 這個時候, 如果執(zhí)行db2setup的話, 會報少一個包. The required library file libaio.so.1 is not found on the system.
Ubuntu的好處體現(xiàn)出來了,sudo apt-get install libaio1 安裝缺少的包。
其實我第一次安裝的是libaio, apt-get提示我說不可用, 可以用libaio1替代。
安裝完依賴包, 就可以用db2setup來安裝了。 因為Ubuntu一般不允許root登陸, 為了方便, 我用我的用戶安裝的。 用root權(quán)限安裝的話, 會安裝到/opt/ibm/db2下面, 用普通用戶的話, 會安裝的用戶目錄。
嗯, 高手也可以用db2-install命令行模式安裝。 其實期間沒有交互信息的, 哪個都行。
安裝的過程, 就不細說了, 一路next過來的。 - 安裝結(jié)束以后, 得記著, 要運行安裝目錄下的db2profile, 添加環(huán)境變量。. /home/richar/sqllib/db2profile 自己看清楚目錄哦。
- 執(zhí)行結(jié)束, 運行db2start命令, 它報給我個錯:
SQL1220NThedatabasemanagersharedmemorysetcannotbeallocated.
網(wǎng)上搜了些資料, 說是共享緩存不足, 具體原理我也不清楚了。 用sysctl kernel.shmmax命令查看了共享內(nèi)存。kernel.shmmax=33554432(32MB), 設(shè)置成256M
echo 268435456 > /proc/sys/kernel/shmmax
之后再次執(zhí)行db2start, 啟動成功。
本文出自 “立子” 博客,請務(wù)必保留此出處http://leaze.blog.51cto.com/83088/195583
網(wǎng)站開發(fā)時經(jīng)常需要在某個頁面需要實現(xiàn)對大量圖片的瀏覽,如果考慮流量的話,大可以像pconline一樣每個頁面只顯示一張圖片,讓用戶每看一張圖片就需要重新下載一下整個頁面。不過,在web2.0時代,更多人愿意用javascript來實現(xiàn)一個圖片瀏覽器,讓用戶無需等待過長的時間就能看到其他圖片。
知道了一張圖片的地址,需要把它在一個固定大小的html容器(可以是div等)里邊顯示出來,最重要的當(dāng)然是需要知道這張即將顯示的圖片的寬和高,然后再結(jié)合容器的寬和高,按照一定的縮放比例使圖片顯示出來。因此,實現(xiàn)圖片預(yù)加載就成為圖片瀏覽器的核心功能了。
做過圖片翻轉(zhuǎn)效果的朋友其實都知道,要讓圖片輪換的時候不出現(xiàn)等待,最好是先讓圖片下載到本地,讓瀏覽器緩存起來。這時,一般都會用到j(luò)s里邊的Image對象。一般的手段無非這樣:
function preLoadImg(url) {
var img = new Image();
img.src = url;
}
通過調(diào)用preLoadImg函數(shù),傳入圖片的url,就能使圖片預(yù)先下載下來了。實際上,這里用到的預(yù)下載功能也和這基本一致。圖片預(yù)下載下來后,通過 img的width和height屬性,就能知道圖片的寬和高了。但是需要考慮到,在做圖片瀏覽器功能時,圖片都是實時顯示的。比如你點了顯示的按鈕,這個時候才會調(diào)用上邊類似的代碼來加載圖片。因此,如果你直接用img.width的時候,圖片還沒有完全下載下來。因此,需要用一些異步的方法,等到圖片下載完畢的時候才會再對img的width和height進行調(diào)用。
實現(xiàn)這樣的異步方法實際上不難,圖片的下載完畢事件也很簡單,就是簡單的onload事件。因此,我們可以寫出下面的代碼:
function loadImage(url, callback) {
var img = new Image();
img.src = url;
img.onload = function(){ //圖片下載完畢時異步調(diào)用callback函數(shù)。
callback.call(img); // 將callback函數(shù)this指針切換為img。
};
}
好了,再來寫一個測試用例。
function imgLoaded(){
alert(this.width);
}
<input type="button" value="loadImage" onclick="loadImage('aaa.jpg',imgLoaded)"/>
在firefox中測試一下,發(fā)現(xiàn)不錯,果然和預(yù)想的效果一樣,在圖片下載后,就會彈出圖片的寬度來。無論點擊多少次或者刷新結(jié)果都一樣。
不過,做到這一步,先別高興太早——還需要考慮一下瀏覽器的兼容性,于是,趕緊到ie里邊測試一下。沒錯,同樣彈出了圖片的寬度。但是,再點擊load的時候,情況就不一樣了,什么反應(yīng)都沒有了。刷新一下,也同樣如此。
經(jīng)過對多個瀏覽器版本的測試,發(fā)現(xiàn)ie6、opera都會這樣,而firefox和safari則表現(xiàn)正常。其實,原因也挺簡單的,就是因為瀏覽器的緩存了。當(dāng)圖片加載過一次以后,如果再有對該圖片的請求時,由于瀏覽器已經(jīng)緩存住這張圖片了,不會再發(fā)起一次新的請求,而是直接從緩存中加載過來。對于 firefox和safari,它們視圖使這兩種加載方式對用戶透明,同樣會引起圖片的onload事件,而ie和opera則忽略了這種同一性,不會引起圖片的onload事件,因此上邊的代碼在它們里邊不能得以實現(xiàn)效果。
怎么辦呢?最好的情況是Image可以有一個狀態(tài)值表明它是否已經(jīng)載入成功了。從緩存加載的時候,因為不需要等待,這個狀態(tài)值就直接是表明已經(jīng)下載了,而從http請求加載時,因為需要等待下載,這個值顯示為未完成。這樣的話,就可以搞定了。
經(jīng)過一些分析,終于發(fā)現(xiàn)一個為各個瀏覽器所兼容的Image的屬性——complete。所以,在圖片onload事件之前先對這個值做一下判斷即可。最后,代碼變成如下的樣子:
function loadImage(url, callback) {
var img = new Image(); //創(chuàng)建一個Image對象,實現(xiàn)圖片的預(yù)下載
img.src = url;
if (img.complete) { // 如果圖片已經(jīng)存在于瀏覽器緩存,直接調(diào)用回調(diào)函數(shù)
callback.call(img);
return; // 直接返回,不用再處理onload事件
}
img.onload = function () { //圖片下載完畢時異步調(diào)用callback函數(shù)。
callback.call(img);//將回調(diào)函數(shù)的this替換為Image對象
};
};
經(jīng)過這么一番折騰,總算是讓各個瀏覽器都能滿足我們的目標(biāo)了。雖然代碼很簡單,但是卻把圖片瀏覽器中最核心的問題解決掉了,接下來你所要做的,僅僅是圖片如何呈現(xiàn)的問題了。
常用JDBC連接字符串
1.MySQL
代碼:
Class.forName( " org.gjt.mm.mysql.Driver " );
Connection conn = DriverManager.getConnection( " jdbc:mysql://MyDbComputerNameOrIP:3306/myDatabaseName " , sUsr, sPwd );
代碼:
Class.forName( " com.microsoft.jdbc.sqlserver.SQLServerDriver " );
Connection conn = DriverManager.getConnection( "
jdbc:microsoft:sqlserver://MyDbComputerNameOrIP:1433;databaseName=master
" , sUsr, sPwd );
代碼:
Class.forName( " oracle.jdbc.driver.OracleDriver " );
Connection conn = DriverManager.getConnection ("jdbc: oracle:thin: @MyDbComputerNameOrIP:1521: ORCL " , sUsr, sPwd );
代碼:
Class.forName( " com.ibm.db2.jdbc.net.DB2Driver " );
String url = " jdbc:db2://192.9.200.108:6789/SAMPLE "
Connection conn = DriverManager.getConnection( url, sUsr, sPwd );
代碼:
Class.forName( " sun.jdbc.odbc.JdbcOdbcDriver " );
Connection conn = DriverManager.getConnection("jdbc: odbc: " + sDsn, sUsr, sPwd );
代碼:
Class.forName( " org.postgresql.Driver " );
Connection conn = DriverManager.getConnection( " jdbc:postgresql://MyDbComputerNameOrIP/myDatabaseName " , sUsr, sPwd );
showModalDialog()、showModelessDialog()方法使用詳解
Javascript有許多內(nèi)建的方法來產(chǎn)生對話框,如:window.alert(), window.confirm(),window.prompt().等。 然而IE提供更多的方法支持對話框。如:
showModalDialog() (IE 4+ 支持)
showModelessDialog() (IE 5+ 支持)
window.showModalDialog()方法用來創(chuàng)建一個顯示HTML內(nèi)容的模態(tài)對話框,由于是對話框,因此它并沒有一般用window.open()打開的窗口的所有屬性。
window.showModelessDialog()方法用來創(chuàng)建一個顯示HTML內(nèi)容的非模態(tài)對話框。
當(dāng)我們用showModelessDialog()打開窗口時,不必用window.close()去關(guān)閉它,當(dāng)以非模態(tài)方式[IE5]打開時, 打開對話框的窗口仍可以進行其他的操作,即對話框不總是最上面的焦點,當(dāng)打開它的窗口URL改變時,它自動關(guān)閉。而模態(tài)[IE4]方式的對話框始終有焦點(焦點不可移走,直到它關(guān)閉)。模態(tài)對話框和打開它的窗口相聯(lián)系,因此我們打開另外的窗口時,他們的鏈接關(guān)系依然保存,并且隱藏在活動窗口的下面。
使用方法如下:
vReturnValue = window.showModalDialog(sURL [, vArguments] [, sFeatures])
vReturnValue = window.showModelessDialog(sURL [, vArguments] [, sFeatures])
參數(shù)說明:
sURL
必選參數(shù),類型:字符串。用來指定對話框要顯示的文檔的URL。
vArguments
可選參數(shù),類型:變體。用來向?qū)υ捒騻鬟f參數(shù)。傳遞的參數(shù)類型不限,包括數(shù)組等。對話框通過window.dialogArguments來取得傳遞進來的參數(shù)。
sFeatures
可選參數(shù),類型:字符串。用來描述對話框的外觀等信息,可以使用以下的一個或幾個,用分號“;”隔開。
dialogHeight 對話框高度,不小于100px,IE4中dialogHeight 和 dialogWidth 默認的單位是em,而IE5中是px,為方便其見,在定義modal方式的對話框時,用px做單位。
dialogWidth: 對話框?qū)挾取?nbsp;
dialogLeft: 距離桌面左的距離。
dialogTop: 離桌面上的距離。
center: {yes | no | 1 | 0 }:窗口是否居中,默認yes,但仍可以指定高度和寬度。
help: {yes | no | 1 | 0 }:是否顯示幫助按鈕,默認yes。
resizable: {yes | no | 1 | 0 } [IE5+]:是否可被改變大小。默認no。
status: {yes | no | 1 | 0 } [IE5+]:是否顯示狀態(tài)欄。默認為yes[ Modeless]或no[Modal]。
scroll:{ yes | no | 1 | 0 | on | off }:指明對話框是否顯示滾動條。默認為yes。
還有幾個屬性是用在HTA中的,在一般的網(wǎng)頁中一般不使用。
dialogHide:{ yes | no | 1 | 0 | on | off }:在打印或者打印預(yù)覽時對話框是否隱藏。默認為no。
edge:{ sunken | raised }:指明對話框的邊框樣式。默認為raised。
unadorned:{ yes | no | 1 | 0 | on | off }:默認為no。
傳入?yún)?shù):
要想對話框傳遞參數(shù),是通過vArguments來進行傳遞的。類型不限制,對于字符串類型,最大為4096個字符。也可以傳遞對象,例如:
test1.htm
====================
<script>
var mxh1 = new Array("mxh","net_lover","孟子E章")
var mxh2 = window.open("about:blank","window_mxh")
// 向?qū)υ捒騻鬟f數(shù)組
window.showModalDialog("test2.htm",mxh1)
// 向?qū)υ捒騻鬟fwindow對象
window.showModalDialog("test3.htm",mxh2)
</script>
test2.htm
====================
<script>
var a = window.dialogArguments
alert("您傳遞的參數(shù)為:" + a)
</script>
test3.htm
====================
<script>
var a = window.dialogArguments
alert("您傳遞的參數(shù)為window對象,名稱:" + a.name)
</script>
可以通過window.returnValue向打開對話框的窗口返回信息,當(dāng)然也可以是對象。例如:
test4.htm
===================
<script>
var a = window.showModalDialog("test5.htm")
for(i=0;i<a.length;i++) alert(a[i])
</script>
test5.htm
===================
<script>
function sendTo()
{
var a=new Array("a","b")
window.returnValue = a
window.close()
}
</script>
<body>
<form>
<input value="返回" type=button onclick="sendTo()">
</form>
常見問題:
1,如何在模態(tài)對話框中進行提交而不新開窗口?
如果你 的 瀏覽器是IE5.5+,可以在對話框中使用帶name屬性的iframe,提交時可以制定target為該iframe的name。對于IE4+,你可以用高度為0的frame來作:例子,
test6.htm
===================
<script>
window.showModalDialog("test7.htm")
</script>
test7.htm
===================
if(window.location.search) alert(window.location.search)
<frameset rows="0,*">
<frame src="about:blank">
<frame src="test8.htm">
</frameset>
test8.htm
===================
<form target="_self" method="get">
<input name=txt value="test">
<input type=submit>
</form>
<script>
if(window.location.search) alert(window.location.search)
</script>
2,可以通過http://servername/virtualdirname/test.htm?name=mxh方式直接向?qū)υ捒騻鬟f參數(shù)嗎?
答案是不能。但在frame里是可以的。
<----------------HTML部分--------------------->
<style>
.close{
visibility:hidden;
border : 1px solid #008000;
position:absolute;
}
.open{
visibility:visible;
border : 1px solid #008000;
position:absolute;
}
</style>
<script language='JavaScript'>
//—————顯示菜單項 menuId:當(dāng)前菜單Id—————
function showMenuItem(menuId) {
var node = document.getElementById(menuId);
if(node.hasChildNodes()) {
node.style.visibility='visible';
}
}
//—————隱藏菜單項 menuId:當(dāng)前菜單Id—————
function hideMenuItem(menuId) {
document.getElementById(menuId).style.visibility='hidden';
}
//—————隱藏菜單項事件方法—————
function hideMenuItemEvent() {
event.srcElement.parentElement.style.visibility='hidden';
}
//—————初始化下拉框—————
function inintSelectMenu() {
//查找一級節(jié)點
var resultNodes = findXmlnodes("http://mainClass",resultNodes);
var mainClassNode = document.getElementById("mainClass");
//給一級節(jié)點添加子子節(jié)點
addChildrenNodes(mainClassNode,resultNodes);
//緩存一級菜單選擇的默認值
var mainClassTxtNode = document.getElementById("mainClassTxt");
var mainClassBtnNode = document.getElementById("mainClassBtn");
mainClassTxtNode.setAttribute("tempId",1);
//設(shè)置下拉菜單絕對位置
setDivAbsulotePosition(mainClassNode,mainClassTxtNode);
//設(shè)置Btn的絕對位置
//mainClassBtnNode.style.position = "absolute";
//setBtnAbsulotePosition(mainClassBtnNode,mainClassTxtNode);
//一級菜單
mainClassNode.attachEvent(onblur,hideMenuItem);
//二級菜單
var subClassNode = document.getElementById("subClass");
var subClassBtnNode = document.getElementById("subClassBtn");
var subClassTxtNode = document.getElementById("subClassTxt");
setDivAbsulotePosition(subClassNode,subClassTxtNode);
//設(shè)置Btn的絕對位置
//subClassBtnNode.style.position = "absolute";
//setBtnAbsulotePosition(subClassBtnNode,subClassTxtNode);
//三級菜單
var itemClassNode = document.getElementById("itemClass");
var itemClassBtnNode = document.getElementById("itemClassBtn");
var itemClassTxtNode = document.getElementById("itemClassTxt");
setDivAbsulotePosition(itemClassNode,itemClassTxtNode);
//設(shè)置Btn的絕對位置
//itemClassBtnNode.style.position = "absolute";
//setBtnAbsulotePosition(itemClassBtnNode,itemClassTxtNode);
}
//—————更新下拉菜單—————
function updateSelectMenu() {
//被選擇節(jié)點Id
var nodeId = event.srcElement.getAttribute("id");
//被選擇節(jié)點文本子節(jié)點名
var nodeName = event.srcElement.title != null > 5 ? event.srcElement.title : event.srcElement.childNodes.item(0).nodeValue;
//被選擇節(jié)點父節(jié)點
var parentNode = event.srcElement.parentElement;
//被選擇節(jié)點父節(jié)點Id
var parentNodeId = parentNode.getAttribute("id");
//給文本框賦被選擇值
document.getElementById(parentNodeId + "Txt").setAttribute("value",nodeName);
//如果被選擇的是一級菜單,更新二、三級菜單
if(parentNodeId == "mainClass") {
//緩存一級菜單選擇
document.getElementById(parentNodeId + "Txt").setAttribute("tempId",nodeId);
//清空二級菜單列表
document.getElementById("subClassTxt").setAttribute("value","請選擇");
//清空三級菜單列表
document.getElementById("itemClassTxt").setAttribute("value","請選擇");
//移除二級節(jié)點
removeChildNodes("subClass");
//移除三級節(jié)點
removeChildNodes("itemClass");
//查找二級節(jié)點
var resultSubNodes = findXmlnodes("http://mainClass[@id=" + nodeId + "]/subClass",resultSubNodes);
//alert(resultSubNodes.length);
var subNode = document.getElementById("subClass");
//給二級節(jié)點添加子子節(jié)點
addChildrenNodes(subNode,resultSubNodes);
}
//如果更新的是二級菜單,更新三級菜單
if(parentNodeId == "subClass") {
//獲得一級菜單緩存值
var mainClassId = document.getElementById("mainClassTxt").getAttribute("tempId");
//清空三級菜單列表
document.getElementById("itemClassTxt").setAttribute("value","請選擇");
removeChildNodes("itemClass");
//移除三級節(jié)點
removeChildNodes("itemClass");
//查找三級節(jié)點
var resultItemNodes = findXmlnodes("http://mainClass[@id=" + mainClassId + "]/subClass[@id=" + nodeId + "]/item",resultItemNodes);
//alert(resultItemNodes.length);
var itemNode = document.getElementById("itemClass");
//給三級節(jié)點添加子子節(jié)點
addChildrenNodes(itemNode,resultItemNodes);
}
}
//—————添加子節(jié)點列表 parentNode: 父節(jié)點, childrenNodes: 子節(jié)點列表—————
function addChildrenNodes(parentNode,childrenNodes) {
for(i = 0; i < childrenNodes.length; i++) {
//var tempNode = childrenNodes.item(i);
//prompt("tempNode",tempNode.xml);
createNode("div",childrenNodes.item(i).getAttribute("id"),childrenNodes.item(i).getAttribute("name"),parentNode);
//alert(childrenNodes.item(i).getAttribute("name") + " " + childrenNodes.item(i).getAttribute("id"));
}
}
//—————創(chuàng)建子節(jié)點,并添加到父節(jié)點 type: 節(jié)點類型, id:節(jié)點Id, txt:文本節(jié)點文本值,parentNode: 父節(jié)點 —————
function createNode(type,id,txt,parentNode) {
//文本節(jié)點
var txtNode = null;
//需創(chuàng)建的子節(jié)點
var subNode = null;
//判斷節(jié)點類型是否為空,為空直接返回
if(type == null) {
return;
}
//創(chuàng)建節(jié)點
subNode = document.createElement(type);
//判斷是否包含文本是否為空,不為空則創(chuàng)建并添加文本子節(jié)點
if(txt != null) {
//設(shè)置文本節(jié)點彈出文字
if(checkSelectMenuItemLength(txt)){
subNode.title = txt;
var txtTemp = txt.substring(0, 5) + "..." ;
//創(chuàng)建文本節(jié)點
txtNode = document.createTextNode(txtTemp);
}else {
txtNode = document.createTextNode(txt);
}
//添加文本節(jié)點
subNode.appendChild(txtNode);
}
//判斷id是否為空,不為空則添加id屬性
if(id != null) {
subNode.setAttribute('id',id);
}
subNode.attachEvent("onclick",hideMenuItemEvent);
subNode.attachEvent("onclick",updateSelectMenu);
subNode.attachEvent("onmouseover",romanceItem);
subNode.attachEvent("onmouseout",unRomanceItem);
//添加新建子節(jié)點到父節(jié)點
parentNode.appendChild(subNode);
}
//—————查找數(shù)據(jù)節(jié)點 condition: XPath查詢條件, resultNodes:返回節(jié)點集合—————
function findXmlnodes(condition,resultNodes) {
//判斷查詢條件是否為空
if(condition == null) {
return;
}
// 初始化ActiveXObject DOMDocment對象
var xmlDoc = new ActiveXObject("Msxml2.DOMDocument");
// 設(shè)置異步方式
xmlDoc.async=false;
// 加載xml
xmlDoc.load(document.getElementById("mainClassTxt").getAttribute("xmlSrc"));
// 指定查詢語言
xmlDoc.setProperty("SelectionLanguage","XPath");
// 查詢并獲得節(jié)點
resultNodes = xmlDoc.documentElement.selectNodes(condition);
//alert(resultNodes.length);
return resultNodes;
}
//—————移除所有子節(jié)點 pareantNodeName: 父節(jié)點名—————
function removeChildNodes(pareantNodeName) {
var subNodes = document.getElementById(pareantNodeName).childNodes;
var subNodeslength = subNodes.length;
for (i = 0; i < subNodeslength; i++) {
subNodes.item(0).removeNode(true);
}
}
//—————渲染條目背景色—————
function romanceItem() {
event.srcElement.style.backgroundColor="cornflowerblue";
}
//—————反渲染條目背景色—————
function unRomanceItem() {
event.srcElement.style.backgroundColor="#ffffff";
}
//—————檢測條目長度—————
function checkSelectMenuItemLength(txt) {
if(txt.length > 5)
return true;
else
return false;
}
//—————設(shè)置層的絕對坐標(biāo) setNode:須設(shè)置坐標(biāo)的節(jié)點 consultNode:參照節(jié)點 —————
function setDivAbsulotePosition(setNode,consultNode) {
setNode.style.top = getPosition(consultNode).y + consultNode.offsetHeight;
setNode.style.left = getPosition(consultNode).x;
setNode.style.width = consultNode.offsetWidth;
}
function setBtnAbsulotePosition(setNode,consultNode) {
setNode.style.top = getPosition(consultNode).y;
setNode.style.left = getPosition(consultNode).x + consultNode.offsetWidth;
}
//—————獲取參照節(jié)點的絕對位置 node: 參照節(jié)點—————
function getPosition(node){
var left = 0;
var top = 0;
while (node.offsetParent){
left += node.offsetLeft;
top += node.offsetTop;
node = node.offsetParent;
}
left += node.offsetLeft;
top += node.offsetTop;
return {x:left, y:top};
}
</script>
<html>
<body onload="inintSelectMenu();">
<form>
<br><br><br><br><br><br><br><br><br><br><br><br>
<center>
<table>
<tr>
<td>
主分類
<input type='text' id='mainClassTxt' readonly='true' value="請選擇" xmlSrc="selectMenuData.xml">
<input id='mainClassBtn' type='button' value='>>' onclick="showMenuItem('mainClass');hideMenuItem('itemClass');hideMenuItem('subClass');" />
</input>
<div id='mainClass' class="close" >
</div>
</td>
<td>
子分類
<input type='text' id='subClassTxt' readonly='true' value="請選擇" >
<input id='subClassBtn' type='button' value='>>' onclick="showMenuItem('subClass');hideMenuItem('mainClass');hideMenuItem('itemClass');"/>
</input>
<div id='subClass' class="close" >
</div>
</td>
<td>
條 目
<input type='text' id='itemClassTxt' readonly='true' value="請選擇" >
<input id='itemClassBtn' type='button' value='>>' onclick="showMenuItem('itemClass');hideMenuItem('mainClass');hideMenuItem('subClass');" />
</input>
<div id='itemClass' class="close" >
</div>
</td>
</tr>
</table>
</center>
</form>
</body>
</html>
<----------------HTML部分--------------------->
<----------------XML部分--------------------->
<classes>
<mainClass id='1' name='book'>
<subClass id='1' name='computer'>
<item id='1' name='think in java'></item>
<item id='2' name='C#'></item>
<item id='3' name='javascript'></item>
</subClass>
<subClass id='2' name='literature'>
<item id='1' name='literaturea'></item>
<item id='2' name='literatureb'></item>
<item id='3' name='literaturec'></item>
</subClass>
<subClass id='3' name='test'>
<item id='1' name='testaaaa'></item>
<item id='2' name='testbbbb'></item>
<item id='3' name='testcccc'></item>
</subClass>
<subClass id='4' name='ssssss'>
<item id='1' name='sssssssaaa'></item>
<item id='2' name='sssssssbbb'></item>
<item id='3' name='sssssssccc'></item>
</subClass>
</mainClass>
<mainClass id='2' name='book2'>
<subClass id='1' name='computer2'>
<item id='1' name='think in java2'></item>
<item id='2' name='C#2'></item>
<item id='3' name='javascript2'></item>
</subClass>
<subClass id='2' name='literature2'>
<item id='1' name='literaturea21'></item>
<item id='2' name='literatureb22'></item>
<item id='3' name='literaturec23'></item>
</subClass>
<subClass id='3' name='test2'>
<item id='1' name='testaaaa21'></item>
<item id='2' name='testbbbb22'></item>
<item id='3' name='testcccc23'></item>
</subClass>
<subClass id='4' name='ssssss2'>
<item id='1' name='sssssssaaa21'></item>
<item id='2' name='sssssssbbb22'></item>
<item id='3' name='sssssssccc23'></item>
</subClass>
</mainClass>
<mainClass id='3' name='book3'>
<subClass id='1' name='computer3'>
<item id='1' name='think in java3'></item>
<item id='2' name='C#3'></item>
<item id='3' name='javascript3'></item>
</subClass>
<subClass id='2' name='literature3'>
<item id='1' name='literaturea31'></item>
<item id='2' name='literatureb32'></item>
<item id='3' name='literaturec33'></item>
</subClass>
<subClass id='3' name='test3'>
<item id='1' name='testaaaa31'></item>
<item id='2' name='testbbbb32'></item>
<item id='3' name='testcccc33'></item>
</subClass>
<subClass id='4' name='ssssss3'>
<item id='1' name='sssssssaaa31'></item>
<item id='2' name='sssssssbbb32'></item>
<item id='3' name='sssssssccc33'></item>
</subClass>
</mainClass>
<mainClass id='4' name='book4'>
<subClass id='1' name='computer4'>
<item id='1' name='think in java4'></item>
<item id='2' name='C#4'></item>
<item id='3' name='javascript4'></item>
</subClass>
<subClass id='2' name='literature4'>
<item id='1' name='literaturea41'></item>
<item id='2' name='literatureb42'></item>
<item id='3' name='literaturec43'></item>
</subClass>
<subClass id='3' name='test4'>
<item id='1' name='testaaaa41'></item>
<item id='2' name='testbbbb42'></item>
<item id='3' name='testcccc43'></item>
</subClass>
<subClass id='4' name='ssssss4'>
<item id='1' name='sssssssaaa41'></item>
<item id='2' name='sssssssbbb42'></item>
<item id='3' name='sssssssccc43'></item>
</subClass>
</mainClass>
</classes>
<----------------XML部分--------------------->
- var newopen = function(id,level)
- {
- return function()
- {
- opentree(id,level);//該函數(shù)為外部定義的一個執(zhí)行函數(shù);
- }
- }
- x.attachEvent("onclick",newopen(id,parseInt(level)+1));
- y.attachEvent("onclick",newopen(id,parseInt(level)+2));