MozTW 討論區 https://forum.moztw.org/ |
|
請問台灣大哥大資費頁面的 JavaScript 問題 https://forum.moztw.org/viewtopic.php?f=13&t=25648 |
第 1 頁 (共 1 頁) |
發表人: | Coopoo [ 2009-01-03, 22:55 ] |
文章主題 : | 請問台灣大哥大資費頁面的 JavaScript 問題 |
台灣大哥大的資費說明頁面中的資費表格,在 Firefox 上無法顯示。 開了 DOM Inspector 來看,一開始的表格都還是正常的,後來到了資費的部分, id 為 Tag_IE_1 的 DIV 開始,#Tag_IE_1 以及裡面的物件 (表格、框架、圖片等),在 DOM Inspector 的 Box Model 中,box height 跟 box width 都是零。 不過在 computed style 中的 height 和 width 都不是零 ( auto 或是 100px 之類的 ) 我目前是用了無樣式,那個表格的內容才會顯示出來,請問是哪裡出了問題呢? 另外我想順便問一下為什麼 box model 和 computed style 中的屬性會不一樣? ( 還是說 box height 和 height 是不一樣的? ) 謝謝。 |
發表人: | Coopoo [ 2009-01-06, 08:07 ] |
文章主題 : | |
他的兩個資費表格 ( 3G 與 2G 的) 的 id 都是 Tag_IE_1,似乎是利用 [3G資費行動方案] 與 [2G資費行動方案] 兩張圖片去呼叫 JavaScript 函數,來控制樣式表中 display 的值。 因為 Firefox 中看,兩個 Tag_IE_1 的 div 都是 display: none,所以我猜是 JavaScript 的問題。 ![]() (之前看半天沒看到這個,還真是脫線 ![]() 可是我不懂 JavaScript,請問是哪裡出問題,我想寫信請他們改進。 謝謝。 他用來呼叫函數的分別是 [3G資費行動方案] 代碼: onclick="Pause_Msg()" onmouseover="Rot_Msg(1) [2G資費行動方案] 代碼: onclick="Pause_Msg()" onmouseover="Rot_Msg(2) 這是我在原始碼中找到的 JavaScript 代碼: //var Msg_Timer;
var onPause=false; var currentMsg=0; var Msg_Obj=(document.all)?Tag_IE_1:document.all.Tag_NN_1; function Rot_Msg(m){ if(!onPause||m){ for(i=0;i<document.Tag_COMM.length;i++){ document.Tag_COMM[i].src="http://service.taiwanmobile.com/consumer/images/tab_img"+(i+1)+"0.gif"; Msg_Obj[i].style.display="none"; } if(m){ currentMsg=m-1; //clearTimeout(Msg_Timer); }else{ //Msg_Timer=setTimeout("none",180000); } document.Tag_COMM[currentMsg].src="http://service.taiwanmobile.com/consumer/images/tab_img"+(currentMsg+1)+"1.gif"; Msg_Obj[currentMsg].style.display="block"; currentMsg=currentMsg+1==document.Tag_COMM.length?0:currentMsg+1; } } function Pause_Msg(){ onPause=onPause?false:true } Rot_Msg() |
發表人: | 風痕影 [ 2009-01-07, 11:50 ] |
文章主題 : | |
Coopoo 寫: var Msg_Obj=(document.all)?Tag_IE_1:document.all.Tag_NN_1;
這程式在瀏覽器支援 document.all 時 Msg_Obj = Tag_IE_1 不支援的時候卻等於 document.all.Tag_NN_1,好詭異 @@" 其實 Msg_Obj = document.getElementById('Tag_IE_1'); 就可以兩邊通用了 不過,因為標準中同頁面上同個 ID 不可重複,所以這樣應該也無法取得陣列吧?(我不肯定瀏覽器的實際行為) 幸好它兩個 #Tag_IE_1 都有 name="Tag_NN_1" 所以可以直接用 Msg_Obj = document.getElementsByName('Tag_NN_1'); 解決 |
發表人: | Coopoo [ 2009-01-08, 20:26 ] |
文章主題 : | |
風痕影 寫: 這程式在瀏覽器支援 document.all 時 Msg_Obj = Tag_IE_1
不支援的時候卻等於 document.all.Tag_NN_1,好詭異 @@" 其實 Msg_Obj = document.getElementById('Tag_IE_1'); 就可以兩邊通用了 不過,因為標準中同頁面上同個 ID 不可重複,所以這樣應該也無法取得陣列吧?(我不肯定瀏覽器的實際行為) 幸好它兩個 #Tag_IE_1 都有 name="Tag_NN_1" 所以可以直接用 Msg_Obj = document.getElementsByName('Tag_NN_1'); 解決 謝謝,我剛剛測試了一下,將 代碼: var Msg_Obj=(document.all)?Tag_IE_1:document.all.Tag_NN_1; 改為 代碼: var Msg_Obj = document.getElementsByName('Tag_NN_1');
更改以後,Fx 中的確可以順利切換不同的表格。 不過反而 IE 會出問題,兩個表格都不會顯示出來。 不知道是怎麼回事。 |
第 1 頁 (共 1 頁) | 所有顯示的時間為 UTC + 8 小時 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |