http://blog.blueshop.com.tw/ajun/archive/2005/05/18/4004.aspx

最近為了讓網頁在 IE 與 Firefox都可以正常執行,
所以改了許多javascript,
其中,Firefox最常出現的就是getElementById的問題,
在IE中,之前是習慣在驗證表單的時候直接使用form的名稱去取得下面的表單元件,
例如 :

if (frm.tbxuid.value = ""){
alert("請輸入帳號");
}

但是,這樣的語法在firefox是不能跑的,
所以需要改用getElementById去取得物件,
可是,要使用getElementById的前提是表單的物件都需要有id的屬性內容,
偏偏,之前沒有加ID的習慣...
後來硬是將許多物件都加上了ID後發現...radio跟checkbox有問題...
因為radio跟checkbox的name都是一樣的,
但是id不能設定都是一樣的,(參考網址 : 細說HTML元素的ID和Name屬性的區別)
所以,radio跟checkbox要用getElementsByName來抓,
在使用getElementById時我是想說應該有ByName的但是測試了getElementByName,
發覺沒有用...後來看了上面那篇文章才發現原來是少了個s (getElementByName 應該為 getElementsByName),
後來還試了一下看看用getElementsByName抓不抓的到text或是areatext等資料,
結果發現是抓不到的,所以還是硬著頭皮將表元件一個一個檢查了...

所以像上面的程式就要改成

if (document.getElementById('tbxuid').value = ""){
alert("請輸入帳號");
}

要讓所有的瀏覽器都可瀏覽還真是不容易啊...除非網頁的內容很單純....

 

發表於 WEDNESDAY, MAY 18, 2005 8:12 PM
 
回應
# re: getElementById 與 getElementsByName
發表 @ 6/29/2005 5:13 PM  
# re: getElementById 與 getElementsByName
在ff中也可以用document.formname.fieldname.value取得
發表 @ 7/15/2005 10:39 AM  
# re: getElementById 與 getElementsByName
其實getElementsByName(elementName)是可以用的 
只是它回傳的是元素的集合.. 

所以要用陣列的方式來使用.. 

而getElementById(elementId)回傳的則是單一的元素 

試試看下面的.. 

<input type="text" name="text1" value="abgne"> 
<script> 
alert(document.getElementsByName("text1")[0].value); 
</script>
發表 @ 4/10/2006 7:12 PM  
# re: getElementById 與 getElementsByName
謝謝大家的討論, 
剛好在查用getElementsByName()得到字串物件之後, 
要怎麼取得字串內容, 
回來只要加.value就好了啊... 
我試了好久都只能印出object的名稱而已, 
總之感謝! 
發表 @ 8/4/2006 11:36 PM  
# re: getElementById 與 getElementsByName
Thank you
發表 @ 1/16/2007 11:39 AM  

 

 

arrow
arrow
    全站熱搜

    dizzy03 發表在 痞客邦 留言(0) 人氣()


    留言列表 留言列表

    禁止留言