MozTW 討論區

各項 Mozilla 相關軟體與技術討論
現在的時間是 2025-08-27, 21:37

所有顯示的時間為 UTC + 8 小時





發表新文章 回覆主題  [ 5 篇文章 ] 
發表人 內容
文章發表於 : 2006-02-26, 01:22 
離線

註冊時間: 2005-06-23, 18:27
文章: 3
各位FF前輩,我弄了一個在Table中可拖拉欄位的功能,但FF上跑仍怪怪,要麻煩有經驗有時間的大大幫偶看一下哪裡有錯.謝謝您們.



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>HTMLPage2</title>
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="ProgId" content="VisualStudio.HTML">
<meta name="Originator" content="Microsoft Visual Studio .NET 7.1">
<style type="text/css"> .cssResizeDIV{cursor:pointer; }
</style>



<script>

var G_xHeadTR;
var G_blnStartDragColumnOrder = false;
var G_objDynamicDragDropDIV;
var G_aryobjOrderColumnInfo = new Array();
var G_intArrayHit = -1;
var G_intColumnCount = null;
var G_blnMustRefresh = false;
var G_strDynamicDragDropDIVColor="silver";
var G_strDIVOverHeaderTDColor = "lightblue";
var G_strBrowserVersion='';
var G_objColumnOrderTable;


//---初始化ArrayObjOrderColumnInfo
function InitArrayObjOrderColumnInfo(){
var intCx=0;
var intCy=0;
var intOffSetParent;
for (intI=0; intI<G_intColumnCount ; intI++) {
var objTD;
objTD = G_xHeadTR.cells[intI];
objTD.selectIndex = intI;
intOffSetParent = objTD.offsetParent;
if(intCx == 0 && intCy == 0 ){
while (intOffSetParent.offsetParent != null) {
intCy += intOffSetParent.offsetTop;
intCx += intOffSetParent.offsetLeft;
intOffSetParent = intOffSetParent.offsetParent;
}
}
G_aryobjOrderColumnInfo[intI][0] = intCx + objTD.offsetLeft;
G_aryobjOrderColumnInfo[intI][1] = intCy + objTD.offsetTop;
G_aryobjOrderColumnInfo[intI][2] = objTD;
G_aryobjOrderColumnInfo[intI][3] = intCx + objTD.offsetLeft + objTD.clientWidth;
}
}



//---改變Header TD Color
function ChangeHeaderTDColor(iChange){
for(var intI = 0; intI < G_aryobjOrderColumnInfo.length; intI++){
G_aryobjOrderColumnInfo[intI][2].style.backgroundColor ='';
}
if(iChange == "-1") return;
G_aryobjOrderColumnInfo[iChange][2].style.backgroundColor = G_strDIVOverHeaderTDColor;
}



//---取瀏覽器的版本
function GetBrowserVersion(){
var strUserAgent=navigator.userAgent;
var strUserPlatform=navigator.platform;
var strAppName=navigator.appName;
var intWhichplatform=strUserPlatform.indexOf("MacPPC");
if (intWhichplatform==-1){//瀏覽器是IBM PC
if (strAppName=='Netscape'){
return 'IBMFF' ;
}
else{
return 'IBMIE' ;
}
}
else{//瀏覽器是Mac PC
var intIsSafari=strUserAgent.indexOf("Safari");
if (intIsSafari != -1){
return 'MACSAFARI' ;
}
else{
if (strAppName=='Netscape'){
return 'MACFF' ;
}
else{
return 'MACIE' ;
}
}
}
}




function CheckHit(x,y,e){
intmidWObj = G_objDynamicDragDropDIV.style.posWidth / 2;
intmidHObj = 12;
for(var intI=0; intI < G_intColumnCount; intI++){
if( (y) > (G_aryobjOrderColumnInfo[intI][0]) && (y) < (G_aryobjOrderColumnInfo[intI][3] )){
ChangeHeaderTDColor(intI);//---改變Header TD Color
return intI + 1;
}
}
return -1;
}








//---把Form的內容與To內容交換---
function ChangeTDContent(intFrom, intTo){
if(intFrom == intTo) return;
var origfrom = intFrom;
var origto = intTo;
var intRange = 0;

//---更改Header Row---
if( intFrom > intTo ){
intRange = intFrom - intTo;
var strFromTDInnerHTML=G_xHeadTR.cells[intFrom].innerHTML;
var strFromTDWidth=G_xHeadTR.cells[intFrom].width;
var strFromTDAlign=G_xHeadTR.cells[intFrom].align;
for(var intI = 0 ; intI < intRange; intI++){
G_xHeadTR.cells[intFrom].innerHTML = G_xHeadTR.cells[intFrom - 1].innerHTML;
G_xHeadTR.cells[intFrom].width = G_xHeadTR.cells[intFrom - 1].width;
G_xHeadTR.cells[intFrom].align = G_xHeadTR.cells[intFrom - 1].align;
intFrom--;
}
G_xHeadTR.cells[intTo].innerHTML = strFromTDInnerHTML;
G_xHeadTR.cells[intTo].width = strFromTDWidth;
G_xHeadTR.cells[intTo].align = strFromTDAlign;
}
if( intFrom < intTo ){
intRange = intTo - intFrom;
var strFromTDInnerHTML=G_xHeadTR.cells[intFrom].innerHTML;
var strFromTDWidth=G_xHeadTR.cells[intFrom].width;
var strFromTDAlign=G_xHeadTR.cells[intFrom].align;
for(var intI = 0 ; intI < intRange; intI++){
G_xHeadTR.cells[intFrom].innerHTML = G_xHeadTR.cells[intFrom + 1].innerHTML;
G_xHeadTR.cells[intFrom].width = G_xHeadTR.cells[intFrom + 1].width;
G_xHeadTR.cells[intFrom].align = G_xHeadTR.cells[intFrom + 1].align;
intFrom++;
}
G_xHeadTR.cells[intTo].innerHTML = strFromTDInnerHTML;
G_xHeadTR.cells[intTo].width = strFromTDWidth;
G_xHeadTR.cells[intTo].align = strFromTDAlign;
}


for(var intI = 0 ; intI < G_xHeadTR.cells.length; intI++){
G_xHeadTR.cells[intI].selectIndex = intI;
}


//---初始化ArrayObjOrderColumnInfo
InitArrayObjOrderColumnInfo();


//---更改Header Row以外內容---
for ( var iRowInsert = 1 ; iRowInsert < G_objColumnOrderTable.rows.length; iRowInsert++ ){
intFrom = origfrom;
intTo = origto;
if( intFrom > intTo ){
intRange = intFrom - intTo;
var strFromTDInnerHTML= G_objColumnOrderTable.rows[iRowInsert].cells[intFrom].innerHTML;
var strFromTDAlign=G_objColumnOrderTable.rows[iRowInsert].cells[intFrom].align;
for(var intI = 0 ; intI < intRange; intI++){
G_objColumnOrderTable.rows[iRowInsert].cells[intFrom].innerHTML = G_objColumnOrderTable.rows[iRowInsert].cells[intFrom - 1].innerHTML;
G_objColumnOrderTable.rows[iRowInsert].cells[intFrom].align = G_objColumnOrderTable.rows[iRowInsert].cells[intFrom - 1].align;
intFrom--;
}
if (strFromTDInnerHTML != null)G_objColumnOrderTable.rows[iRowInsert].cells[intTo].innerHTML = strFromTDInnerHTML;
if (strFromTDInnerHTML != null)G_objColumnOrderTable.rows[iRowInsert].cells[intTo].align = strFromTDAlign;
}
if( intFrom < intTo ){
intRange = intTo - intFrom;
var strFromTDInnerHTML= G_objColumnOrderTable.rows[iRowInsert].cells[intFrom].innerHTML;
var strFromTDAlign=strFromTDAlign=G_objColumnOrderTable.rows[iRowInsert].cells[intFrom].align;
for(var intI = 0 ; intI < intRange; intI++){
G_objColumnOrderTable.rows[iRowInsert].cells[intFrom].innerHTML = G_objColumnOrderTable.rows[iRowInsert].cells[intFrom + 1].innerHTML;
G_objColumnOrderTable.rows[iRowInsert].cells[intFrom].align = G_objColumnOrderTable.rows[iRowInsert].cells[intFrom + 1].align;
intFrom++;
}
if (strFromTDInnerHTML != null)G_objColumnOrderTable.rows[iRowInsert].cells[intTo].innerHTML = strFromTDInnerHTML;
if (strFromTDInnerHTML != null)G_objColumnOrderTable.rows[iRowInsert].cells[intTo].align = strFromTDAlign;
}
}


var buf = "";
for(var intI=0; intI<G_xHeadTR.cells.length; intI++){
var td ;
td= G_xHeadTR.cells[intI];
tmp = td.innerHTML;
pos = tmp.indexOf("<");
if (pos > 0)
tmp = tmp.substring(0, pos);
else{
if (pos == 0)
tmp = td.innerText;
}
buf += tmp;
if (intI < G_xHeadTR.cells.length-1)buf += ",";
}
}





function InitColumnOrderTable(){

//---判斷瀏覽器版本
G_strBrowserVersion=GetBrowserVersion();
G_objColumnOrderTable=document.getElementById("dg");

G_xHeadTR = G_objColumnOrderTable.rows[0];
if (G_xHeadTR.tagName != "TR") return;


G_intColumnCount=G_objColumnOrderTable.rows[0].cells.length;
for(intI=0; intI < G_intColumnCount ; intI++){
G_aryobjOrderColumnInfo[intI] = new Array();
}


var cx=0;
var cy=0;
var c;
for (intI=0; intI<G_intColumnCount ; intI++) {
var objTD ;
objTD=G_objColumnOrderTable.rows[0].cells[intI];
objTD.selectIndex = intI;
c = objTD.offsetParent;
if (cx == 0 && cy == 0){
while (c.offsetParent != null) {
cy += c.offsetTop;
cx += c.offsetLeft;
c = c.offsetParent;
}
}
G_aryobjOrderColumnInfo[intI][0] = cx + objTD.offsetLeft;
G_aryobjOrderColumnInfo[intI][1] = cy + objTD.offsetTop;
G_aryobjOrderColumnInfo[intI][2] = objTD;
G_aryobjOrderColumnInfo[intI][3] = cx + objTD.offsetLeft + objTD.clientWidth;
//---開啟MouseDown監聽事件
if (G_strBrowserVersion=='IBMIE')objTD.attachEvent("onmousedown",onMouseDownSub);
if ((G_strBrowserVersion=='IBMFF')||(G_strBrowserVersion=='MACFF')){
objTD.addEventListener('mousedown', onMouseDownSub, false);
}
}
if (G_aryobjOrderColumnInfo[0][0] == G_aryobjOrderColumnInfo[0][3])G_blnMustRefresh = true;
}







function onMouseDownSub(e){

if( G_blnMustRefresh){
InitArrayObjOrderColumnInfo();//---初始化ArrayObjOrderColumnInfo
G_blnMustRefresh = false;
}

//---開啟MouseMove,MouseUp監聽事件
if (G_strBrowserVersion=='IBMIE'){
document.attachEvent("onmousemove",onMouseMoveSub);
document.attachEvent("onmouseup",onMouseUpSub);
}
if ((G_strBrowserVersion=='IBMFF')||(G_strBrowserVersion=='MACFF')){
document.addEventListener('mousemove', onMouseMoveSub, false);
document.addEventListener('mouseup', onMouseUpSub, false);
}

G_blnStartDragColumnOrder = true;
//D=A ? B : C 語法(A成立,D=B,否則D=C)

var src;
var c;
if (G_strBrowserVersion=='IBMIE'){
src = e.srcElement;
c = e.srcElement;
}
if ((G_strBrowserVersion=='IBMFF')||(G_strBrowserVersion=='MACFF')){
src = e.target;
c = e.target;
}
if(src.tagName != "TD")return;


// Create our header on the fly
G_objDynamicDragDropDIV = document.createElement("DIV");
G_objDynamicDragDropDIV.innerHTML = src.innerHTML;
G_objDynamicDragDropDIV.style.height = src.offsetParent.clientHeight;
G_objDynamicDragDropDIV.style.width = src.clientWidth;
G_objDynamicDragDropDIV.style.background = G_strDynamicDragDropDIVColor;
G_objDynamicDragDropDIV.style.position = "absolute";
G_objDynamicDragDropDIV.selectIndex= src.selectIndex;
G_objDynamicDragDropDIV.style.borderStyle = "dashed";
G_objDynamicDragDropDIV.style.borderWidth = "1px";
G_objDynamicDragDropDIV.style.display = "none";
while (c.offsetParent != null){
G_objDynamicDragDropDIV.style.y += c.offsetTop;
G_objDynamicDragDropDIV.style.x += c.offsetLeft;
c = c.offsetParent;
}

src.insertBefore(G_objDynamicDragDropDIV,null);
}







function onMouseMoveSub(e){

if(!G_blnStartDragColumnOrder || !G_objDynamicDragDropDIV) return;

var intmidWObj = parseInt(G_objDynamicDragDropDIV.style.width.replace('px','')) / 2;
var intmidHObj = 12;


// Save mouse's position in the document
var intMouseTop , intMouseLeft;
intMouseTop = e.clientY + document.body.scrollTop;
intMouseLeft = e.clientX + document.body.scrollLeft;

var cx=0,cy=0;
var elCurrent = G_objDynamicDragDropDIV.offsetParent;

if (elCurrent != null){
while (elCurrent.offsetParent != null) {
cx += elCurrent.offsetTop;
cy += elCurrent.offsetLeft;
elCurrent = elCurrent.offsetParent;
}
}

G_objDynamicDragDropDIV.style.top = intMouseTop - cx - intmidHObj;
G_objDynamicDragDropDIV.style.left = intMouseLeft - cy - intmidWObj;


if(G_objDynamicDragDropDIV.style.display == "none")G_objDynamicDragDropDIV.style.display = "";

G_intArrayHit = CheckHit(intMouseTop , intMouseLeft , e);

e.cancelBubble = false;
e.returnValue = false;
}





function onMouseUpSub(e){
if(!G_blnStartDragColumnOrder)return;
G_blnStartDragColumnOrder = false;

var intDragDropDIVSelectIndex = G_objDynamicDragDropDIV.selectIndex;

//清除OnMouseDown時動態所產生的DIV
if (G_strBrowserVersion=='IBMIE')G_objDynamicDragDropDIV.removeNode(true);
if ((G_strBrowserVersion=='IBMFF')||(G_strBrowserVersion=='MACFF'))G_objDynamicDragDropDIV.parentNode.removeChild(G_objDynamicDragDropDIV);
G_objDynamicDragDropDIV = null;


ChangeHeaderTDColor(-1);//---改變Header TD Color

if( (G_intArrayHit - 1) < 0 || intDragDropDIVSelectIndex < 0) return; // default faliure

// intDragDropDIVSelectIndex is the 0-based index of the column being moved
// (G_intArrayHit-1) is the 0-based index of the column being replaced
//---把Form的內容與To內容交換---
ChangeTDContent(intDragDropDIVSelectIndex, (G_intArrayHit - 1) );

// Reset our variables
G_intArrayHit = -1;

//---解除監聽事件
if (G_strBrowserVersion=='IBMIE'){
document.detachEvent("onmousemove",onMouseMoveSub);
document.detachEvent("onmouseup",onMouseUpSub);
}
if ((G_strBrowserVersion=='IBMFF')||(G_strBrowserVersion=='MACFF')){
document.removeEventListener('mousemove', onMouseMoveSub, false);
document.removeEventListener('mouseup', onMouseUpSub, false);
}

}




</script>
</head>
<body onload="InitColumnOrderTable();">
<center>
<table border="1" id="dg" width="700">
<tr>
<td id="xxx" width="150" class="cssResizeDIV" align="center">Column 1</td>
<td width="100" class="cssResizeDIV">Column 2</td>
<td width="200" class="cssResizeDIV" align="center">Column 3</td>
<td width="100" class="cssResizeDIV">Left 4</td>
<td width="250" class="cssResizeDIV" align="center">Column 5</td>
</tr>
<tr>
<td align="center">Center 1</td>
<td>Left 2</td>
<td align="center">Center 3</td>
<td><select ID="Select2" NAME="Select1">
<option selected value="3">Enroll</option>
<option value="10">Trans</option>
</select></td>
<td align="Right">Right 5</td>
</tr>
<tr>
<td align="center">Center 1</td>
<td>Left 2</td>
<td align="center">Center 3</td>
<td><select ID="Select1" NAME="Select1">
<option selected value="3">Enroll</option>
<option value="10">Trans</option>
</select></td>
<td align="Right">Right 5</td>
</tr>
<tr>
<td align="center">Center 1</td>
<td>Left 2</td>
<td align="center">Center 3</td>
<td><select ID="Select3" NAME="Select1">
<option selected value="3">Enroll</option>
<option value="10">Trans</option>
</select></td>
<td align="Right">Right 5</td>
</tr>
<tr>
<td align="center">Center 1</td>
<td>Left 2</td>
<td align="center">Center 3</td>
<td><select ID="Select4" NAME="Select1">
<option selected value="3">Enroll</option>
<option value="10">Trans</option>
</select></td>
<td align="Right">Right 5</td>
</tr>
<tr>
<td align="center">Center 1</td>
<td>Left 2</td>
<td align="center">Center 3</td>
<td><select ID="Select5" NAME="Select1">
<option selected value="3">Enroll</option>
<option value="10">Trans</option>
</select></td>
<td align="Right">Right 5</td>
</tr>
<tr>
<td align="center">Center 1</td>
<td>Left 2</td>
<td align="center">Center 3</td>
<td><select ID="Select6" NAME="Select1">
<option selected value="3">Enroll</option>
<option value="10">Trans</option>
</select></td>
<td align="Right">Right 5</td>
</tr>
</table>

</center>
</body>
</html>


回頂端
Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7
 個人資料  
引用回覆  
 文章主題 :
文章發表於 : 2006-02-27, 15:14 
離線

註冊時間: 2005-06-23, 18:27
文章: 3
有沒有前輩可以幫幫我呢??? :(


回頂端
Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7
 個人資料  
引用回覆  
 文章主題 :
文章發表於 : 2006-02-27, 17:04 
離線
[網站管理員]
頭像

註冊時間: 2002-11-04, 13:31
文章: 463
來自: 港都
加入下面箭頭那行試試看。
代碼:
      <title>HTMLPage2</title>
-->      <meta http-equiv="Content-Type" content="text/html; charset=Big5" />
      <meta name="vs_defaultClientScript" content="JavaScript">


回頂端
Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1
 個人資料  
引用回覆  
 文章主題 :
文章發表於 : 2006-03-03, 19:33 
離線

註冊時間: 2005-06-23, 18:27
文章: 3
softcup 寫:
加入下面箭頭那行試試看。
代碼:
      <title>HTMLPage2</title>
-->      <meta http-equiv="Content-Type" content="text/html; charset=Big5" />
      <meta name="vs_defaultClientScript" content="JavaScript">


謝謝的大大的幫忙,但我這網站是美國人要用的,所以Big5不能用... :(


回頂端
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)
 個人資料  
引用回覆  
 文章主題 :
文章發表於 : 2006-03-03, 22:20 
離線
[網站管理員]
頭像

註冊時間: 2002-11-04, 13:31
文章: 463
來自: 港都
t611209g 寫:
softcup 寫:
加入下面箭頭那行試試看。
代碼:
      <title>HTMLPage2</title>
-->      <meta http-equiv="Content-Type" content="text/html; charset=Big5" />
      <meta name="vs_defaultClientScript" content="JavaScript">


謝謝的大大的幫忙,但我這網站是美國人要用的,所以Big5不能用... :(

將你程式中的中文註解都拿掉吧,編碼問題有時會導致 JavaScript 程式出現錯誤。


回頂端
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1)
 個人資料  
引用回覆  
顯示文章 :  排序  
發表新文章 回覆主題  [ 5 篇文章 ] 

所有顯示的時間為 UTC + 8 小時


誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 8 位訪客


不能 在這個版面發表主題
不能 在這個版面回覆主題
不能 在這個版面編輯您的文章
不能 在這個版面刪除您的文章
不能 在這個版面上傳附加檔案

搜尋:
前往 :  
Powered by phpBB® Forum Software © phpBB Group
正體中文語系由 竹貓星球 維護製作
© moztw.org, Mozilla Foundation
MozTW,Mozilla 台灣社群