MozTW 討論區 https://forum.moztw.org/ |
|
該怎麼修改才能讓firefox接受這段程序??? https://forum.moztw.org/viewtopic.php?f=2&t=15618 |
第 1 頁 (共 1 頁) |
發表人: | aman [ 2006-09-18, 16:17 ] |
文章主題 : | 該怎麼修改才能讓firefox接受這段程序??? |
我給 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); } |
發表人: | Scripter [ 2006-09-18, 18:53 ] |
文章主題 : | |
您好: 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 |
發表人: | aman [ 2006-09-18, 21:36 ] |
文章主題 : | |
有效!!非常感激!! 我不是學這一行、也不是做這一行的。搞這些,完全是下班之後的遊戲、純粹的業餘興趣,弄出一堆外行東西,非常不好意思。請大家多包涵哈 |
第 1 頁 (共 1 頁) | 所有顯示的時間為 UTC + 8 小時 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |