MozTW 討論區

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

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





發表新文章 回覆主題  [ 3 篇文章 ] 
發表人 內容
文章發表於 : 2006-09-18, 16:17 
離線

註冊時間: 2005-07-21, 19:33
文章: 29
我給 phpnuke 寫了一個addon ,在 IE 底下跑得非常好,碰上了firefox卻完全動不了!!
請高手指點一下,該怎麼修改才能讓firefox接受這段程序???



forefox跑不動的網頁,在這裡:
http://www.aman.38.com/phpnuke/Upcoming ... e-DEMO.php
操作開關都在icon上面。使用 firefox 的時候,點edit.gif 動不了


ie 能接受,firefox卻不能接受的程序,如下:
代碼:
function MakeForm(myObj,dataArr) {
   var mybody=document.getElementById(myObj);
   // creates an element whose tag name is TABLE
   mytable = document.createElement("TABLE");
   // creates an element whose tag name is TBODY
   mytablebody = document.createElement("TBODY");
   // creating all cells
   
      var myarr = dataArr.split("|");
      var custom_title = myarr[0];
      var active = myarr[1];
      var view = myarr[2];
      var mod_group = myarr[3];
      var inmenu = myarr[4];
      var mid = myarr[5];

      if(inmenu== 1){
       menuchk1="checked";
       menuchk0="";
      }else{
       menuchk1="";
       menuchk0="checked";
      }

      if(active== 1){
       chk1="checked";
       chk0="";
      }else{
       chk1="";
       chk0="checked";
      }

      switch (view)
      {
      case "0":
         sel0 = "selected";
         sel1 = "";
         sel2 = "";
         sel3 = "";
         break
      case "1":
         sel1 = "selected";
         sel0 = "";
         sel2 = "";
         sel3 = "";
         break
      case "2":
         sel2 = "selected";
         sel1 = "";
         sel3 = "";
         sel0 = "";
         break
      case "3":
         sel3 = "selected";
         sel1 = "";
         sel2 = "";
         sel0 = "";
         break
      }

      
   for(j=0;j<5;j++) {
   // creates an element whose tag name is TR
   mycurrent_row=document.createElement("TR");
   for(i=0;i<2;i++) {
      mycurrent_cell=document.createElement("TD");
      if(i==1){
            if(j== 0)addField (mycurrent_cell,"text","custom_title",custom_title,"30");
            if(j== 1){
               mycurrent_cell.innerHTML="<select name='view'>" +
               "<option value='0' "+sel0 +">"+viewprivStr[0]+"</option>" +
               "<option value='1' "+sel1 +">"+viewprivStr[1]+"</option>" +
               "<option value='2' "+sel2 +">"+viewprivStr[2]+"</option>" +
               "<option value='3' "+sel3 +">"+viewprivStr[3]+"</option>" +
               "</select>";
               }

            if(j == 2){
             addRadioField (mycurrent_cell, "radio", "inmenu", "1",menuchk1);     
             apText(mycurrent_cell," Yes");
             addRadioField (mycurrent_cell, "radio", "inmenu", "0",menuchk0);
             apText(mycurrent_cell," No");
         }
            if(j == 3){
             addRadioField (mycurrent_cell, "radio", "active", "1",chk1);
             apText(mycurrent_cell," Yes");
             addRadioField (mycurrent_cell, "radio", "active", "0",chk0);
             apText(mycurrent_cell," No");
         }
        if(j== 4){
              addField (mycurrent_cell,"button","submitED",submitStr,"button");
        }
   }else apText(mycurrent_cell,labelStr[j]);


                // appends the cell TD into the row TR
                mycurrent_row.appendChild(mycurrent_cell);
            }
            // appends the row TR into TBODY
            mytablebody.appendChild(mycurrent_row);
        }
        // appends TBODY into TABLE
        mytable.appendChild(mytablebody);
        // appends TABLE into BODY
        //mybody.appendChild(mytable);
        //document.getElementById('bb').appendChild(mytable);
        // sets the border attribute of mytable to 2;
        mytable.setAttribute("border","2");
        mytable.setAttribute("name","tblED");
        mytable.setAttribute("width","70%");
       

      
 
  var f=document.createElement('form');
  f.setAttribute('name','myForm');
  f.setAttribute('action','#');
  f.setAttribute('method','get');
  //addField (f,"hidden","mid",mid);
  //addField (f,"submit","data","gotdata");
  var hmid=document.createElement("<INPUT TYPE='HIDDEN' NAME='mid'>")
  hmid.setAttribute('value',mid);
  f.appendChild(hmid);

  var myactive=document.createElement("<INPUT TYPE='HIDDEN' NAME='myactive'>")
  myactive.setAttribute('value',active);
  f.appendChild(myactive);

  var myinmenu=document.createElement("<INPUT TYPE='HIDDEN' NAME='myinmenu'>")
  myinmenu.setAttribute('value',inmenu);
  f.appendChild(myinmenu);
 
  f.appendChild(mytable);
  mybody.appendChild(f);
 
    }


回頂端
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
 個人資料  
引用回覆  
 文章主題 :
文章發表於 : 2006-09-18, 18:53 
離線
[社群版本維護者]

註冊時間: 2005-06-25, 21:17
文章: 157
來自: 桃園
您好:

aman 寫:
ie 能接受,firefox卻不能接受的程序

關於這一點,我必須告訴你,"Windows Browsing Ability" 在相容錯誤語法上,下了很大的功夫,所以他很多寫錯的程式都可以跑。


回到正題。
代碼:
function MakeForm(myObj,dataArr) {
=====
中略
=====
  var hmid=document.createElement("<INPUT TYPE='HIDDEN' NAME='mid'>")
  hmid.setAttribute('value',mid);
  f.appendChild(hmid);

  var myactive=document.createElement("<INPUT  TYPE='HIDDEN' NAME='myactive'>")
  myactive.setAttribute('value',active);
  f.appendChild(myactive);

  var myinmenu=document.createElement("<INPUT TYPE='HIDDEN' NAME='myinmenu'>")
  myinmenu.setAttribute('value',inmenu);
  f.appendChild(myinmenu);
 
  f.appendChild(mytable);
  mybody.appendChild(f);
}

根據標準, document.createElement("string");
string 只可以是 NodeName (e.g. input)
不可以是一串標籤 (e.g. <input whatever>)
其他屬性應該使用 .setAttribute 加入

第二,
請注意分行符號: ";"。
改玩如下:
代碼:
(其餘省略)
  var hmid=document.createElement("input");
  hmid.setAttribute('type', "hidden");
  hmid.setAttribute('name', 'mid');
  hmid.setAttribute('value',mid);
  f.appendChild(hmid);

  var myactive=document.createElement("input");
  myactive.setAttribute('type', "hidden");
  myactive.setAttribute('name', 'myactive');
  myactive.setAttribute('value',active);
  f.appendChild(myactive);

  var myinmenu=document.createElement("input");
  myinmenu.setAttribute('type', "hidden");
  myinmenu.setAttribute('name', 'myinmenu');
  myinmenu.setAttribute('value',inmenu);
  f.appendChild(myinmenu);
 
  f.appendChild(mytable);
  mybody.appendChild(f);


以下是經驗談,不想看就算了。

1. 即使 JavaScript 或 XHTML/HTML 不要求原始碼的換行排版,不過為了日後的可讀性,請把他縮排好。
2. 每一行指令之後都要有 ";" 分號(當然,流程控制例外)
3. 若 JavaScript 太長,請獨立為一個 js 檔,再引入
4. 開發時,請注意模組化
5. 不要輕易使用你不瞭解的東西

Regards,
_______Scripter


回頂端
Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7
 個人資料  
引用回覆  
 文章主題 :
文章發表於 : 2006-09-18, 21:36 
離線

註冊時間: 2005-07-21, 19:33
文章: 29
有效!!非常感激!!

我不是學這一行、也不是做這一行的。搞這些,完全是下班之後的遊戲、純粹的業餘興趣,弄出一堆外行東西,非常不好意思。請大家多包涵哈


回頂端
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
 個人資料  
引用回覆  
顯示文章 :  排序  
發表新文章 回覆主題  [ 3 篇文章 ] 

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


誰在線上

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


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

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