台灣最大程式設計社群網站
線上人數
1181
 
會員總數:246690
討論主題:190103
歡迎您免費加入會員
討論區列表 >> Java Script/ Node.js >> 網頁物件的TOP屬性錯誤
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
網頁物件的TOP屬性錯誤
價值 : 30 QP  點閱數:3836 回應數:11
樓主

Andasan
初學者
661 343
2245 419
發送站內信

各位大大,我有一個下拉式選單的函式,在IE8可以順利執行,但是IE10就不行



在IE8可以顯示obj.toppx
但是在IE10卻出現undefined

不知道要修改哪裡?

感謝

本篇文章發表於2013-10-28 10:04
1樓
回應

迷路
捐贈 VP 給 迷路 檢舉此回應
你的obj是什麼?
document物件是沒有toppx和leftpx屬性
本篇文章回覆於2013-10-28 14:13
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

Andasan
檢舉此回應
大大您好

我的obj是由<td id=childmenu style='background-image: url(images/headline_bg.png)' height='30' width='80' align='center' onmouseover='creatlist(this)' >

呼叫

感謝

本篇文章回覆於2013-10-29 08:28
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

迷路
捐贈 VP 給 迷路 檢舉此回應
所以說document物件是沒有toppx和leftpx屬性(實際上我也沒看過這種屬性)
改成和等號左邊一樣就好啦
本篇文章回覆於2013-10-29 09:34
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

Allen
捐贈 VP 給 Allen 檢舉此回應
要不要考慮用jQuery寫
本篇文章回覆於2013-10-29 14:26
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

Andasan
檢舉此回應
這樣一來,不僅IE10無法顯示,連原本可以的IE8都無法顯示了

alert(obj.style.top);<==IE8、IE10出現空白

alert(obj.toppx);<==IE8正常、IE10出現undefined

本篇文章回覆於2013-10-29 15:49
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

Andasan
檢舉此回應
抱歉,我發現toppx是我的自訂義欄位。

"<td id=childmenu toppx='100' leftpx='75' height='30' width='80' align='center' onmouseover='creatlist(this)' ><span style='font-size:12pt;color:#FFFFFF'><a href=#>"+mainitem[j]+"</a></span></td>";

但是為什麼IE8可以讀得到,但是IE10就不行。
語法有變嗎?
感謝
本篇文章回覆於2013-10-29 15:55
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

小羊窒息
捐贈 VP 給 缺氧的羊:窒息 檢舉此回應
直接在標籤內自行定義的屬性...只要不在HTML標準規範當中,
就不會被認定為有效屬性...(僅有舊版的IE...相容)

微軟一直以來, 都是以老大自居, 不肯配合W3C,
然而, 現實的殘酷, 逼的微軟最後還是向W3C妥協了
(就連原本在舊版環境中, 很多大小寫可以無視的部份, 也都變成必須區分大小寫了)

==============================================
不把系統整個改寫掉的話(或是換個選單的話),
比較簡單的方式是...輸出了那一堆html標籤之後,

"<td id=childmenu toppx='100' leftpx='75' height='30' width='80' align='center' onmouseover='creatlist(this)' ><span style='font-size:12pt;color:#FFFFFF'><a href=#>"+mainitem[j]+"</a></span></td>";

另外再加上
<script> document.getElementById('childmenu').toppx = 100; </script>

這樣子可以讓新版IE, FireFox, Chrome, 都知道你的childmenu有著toppx的屬性
(不過大前提是 childmenu 這個ID名稱不可以在網頁中重複出現...)


-------------------------
小小題外話...
微軟的asp.net在當初1.1版時期, 就是把自行定義的屬性直接加在html標籤內,
而之後在2.0版的時期, 全數改成在script內, 另外加上自定屬性...

(也就是說, 連微軟都是這麼做的.................... =.=)
本篇文章回覆於2013-10-29 16:43
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
回應

空賊團長
檢舉此回應
試試看getAttribute

參考
https://www.google.com.tw/search?client=firefox-a&hs=sW6&rls=org.mozilla%3Azh-TW%3Aofficial&q=getattribute+custom+attribute&oq=getAttribute+custom+a&gs_l=serp.3.0.0i30.2390.11419.0.12688.11.10.1.0.0.0.304.1923.1j6j2j1.10.0....0...1c.1.29.serp..1.10.1754.Al7sPBORauE
本篇文章回覆於2013-10-29 16:48
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
作者回應

Andasan
檢舉此回應
我嘗試
alert(document.getElementById(obj).toppx);

卻出現
錯誤: 無法取得未定義或 Null 參考的屬性 'toppx'

不論在IE8或IE10都不行

感謝
本篇文章回覆於2013-10-29 17:20
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
作者回應

Andasan
檢舉此回應
測試到最後

alert(document.getElementById('childmenu').getAttribute('toppx'));<===這樣是可以的

但是
alert(document.getElementById(obj).getAttribute('toppx'));<===這樣卻是不行

因為我的選單是
childmenu0
childmenu1
childmenu2
...

所以使用creatlist(this),this代表childmenu*本身,這樣不行嗎?

不知要怎麼改。
感謝
本篇文章回覆於2013-10-29 17:32
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
最有價值解答

迷路
捐贈 VP 給 迷路 檢舉此回應
你呼叫時用this
那obj就等同document.getElementById(該物件的ID),就算沒有設定ID也一樣
所以不是
alert(document.getElementById(obj).getAttribute('toppx'));

alert(obj.getAttribute('toppx'));
本篇文章回覆於2013-10-29 18:32
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.