Ajax 板


LINE

先看 MM_showHideLayers 再看 MM_findObj ※ 引述《kaworutabris (相如)》之銘言: : <SCRIPT type=text/JavaScript> : <!-- : function MM_findObj(n, d) { MM_findObj 的目的是在指定的 document d 中,尋找 id 是 n 的物件. : var p,i,x; if(!d) d=document; d 代表 document, 如果這個參數沒給,就內定為目前整個網頁的 document. : if((p=n.indexOf("?"))>0&&parent.frames.length) { 先判斷指定的 id n 內有沒有 ? 符號,並判斷父網頁有沒有很多框架. 如果有, : d=parent.frames[n.substring(p+1)].document; 將 document d 鎖定在名為 n.substring(p+1) 的框架內的網頁. 之前判斷 id n 有 ? 出現的位置,先存在 p 裏頭. : n=n.substring(0,p);} 並且將 id n 的前 p 個字當做新的 id n. 可見網頁中每個 id 的命名有特定格式,並以 ? 符號作分隔. : if(!(x=d[n])&&d.all) x=d.all[n]; for 檢查 d[n] 可不可以讀到物件,並 d.all 可不可以讀到物件. 這是用來判斷某個瀏覽器,並使用適合的程式寫法. : (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n]; 這裏連前一行的 for 一起讀,是個迴圈,讀遍 document d 的每一個 form, 找找看裏頭有沒有 id 名叫 n 的物件. 找到了就會停下來. : for(i=0;!x&&d.layers&&i<d.layers.length;i++) 再用另一個迴圈讀遍 document d 的每一個 layer, (這 layer 我不熟; d.layers 可能是某個瀏覽器的物件模型) : x=MM_findObj(n,d.layers[i].document); 用 MM_findObj 函數(也就是目前正在解說的)找找看每個 layer 內含的 document 有沒有 id 是 n 的物件. : if(!x && d.getElementById) x=d.getElementById(n); 再不然,檢查 d.getElementById 能不能讀到物件,能讀到就用 d.getElementById 讀取 id 為 n 的物件. 請注意,前面幾項判斷全都有 !x, 意思是從前面到這裏,按著順序嘗試讀取 id 為 n 的物件; 第一種方法讀不到,就讀第二個,第二個讀不到,就讀第三個... 讀出的結果丟進 x 裏, 之後如果 x 仍不是合格的物件 (以 !x 判斷) 就做下一種嘗試. : return x; : } 最後把 x 物件傳回去. 結果 x 也可能是空值,是因為都沒有 id 為 n 的物件. : function MM_showHideLayers() { //v6.0 MM_showHideLayers 是雙用途函數,可讓指定物件隱藏或顯示. 所接受的參數,依主程式呼叫來看,有三個: id, 不明物, show/hide指示文字. 由本函數程式來看, (for迴圈) 可以一次處理很多個物件, 每個物件都有三個一組的參數,參數按順序擺在陣列裏. : var i,p,v,obj,args=MM_showHideLayers.arguments; args=MM_showHideLayers.arguments 是讀取本函數所傳入的參數. : for (i=0; i<(args.length-2); i+=3) if 迴圈, 跳著讀取每個物件的 id 參數, : ((obj=MM_findObj(args[i]))!=null) { v=args[i+2]; 連上一行 if 一起看,用 MM_findObj 函數尋找 document 有沒有所指定 id 的物件, 如果有,就用 args[i+2] 抓取這個 id 的物件要 show 或 hide 的指示. : if (obj.style) { obj=obj.style; 檢查這個物件有沒有 style 可設定, (較舊的瀏覽器沒有 style) 然後讓 obj 變數參考到該物件的 style 集合. : v=(v=='show')?'visible':(v=='hide')?'hidden':v; } 最後用 ? : 三元運算式做一些 if-then-else 動作, 如果指示是 show, 就把 v 設定為 visible 字串, 否則若指示是 hide, 就把 v 設定為 hidden 字串, 要不然就不動. (這樣,如果函式呼叫寫成 MM_showHideLayers('map1','','visible') 也行得通.) : obj.visibility=v; } : } 最後 obj 所參考的 style 集合中,把 visibility 設定為 v 字串. : --------------------------- : 主程式在呼叫時: : onclick="MM_showHideLayers('map1','','show')" --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.160.108.66
1F:推 litthe:這真的該大推~ 好詳細的說明 02/22 17:38
2F:推 cklonger:強者 02/22 19:43
3F:推 kaworutabris:謝謝ephesians高人Q○Q好詳細,太好了.雖然很難懂, 02/22 20:52
4F:→ kaworutabris:不過終於比較了解了>///< 不過還是有很多問號,若研 02/22 20:53
5F:→ kaworutabris:究完後有問題在提問.(好感動)謝謝Orz 02/22 20:54







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Boy-Girl站內搜尋

TOP