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 的問題。 :?:
(之前看半天沒看到這個,還真是脫線 :oops: )

可是我不懂 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/