论坛首页 Web前端技术论坛

prototypejs 與 <input id="id" /> 衝突

浏览 6155 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (2) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-01-29  
假如我的FORM是這樣的

<form id="frm1" name="frm1">
<input type="hidden" id="id" value="123">
</form>

利用PROTOTYPE取FORM id時會有問題發生...請問各位如何解決呢???
   发表时间:2008-01-29  
没发现什么问题,搂住可以在描述下马
0 请登录后投票
   发表时间:2008-01-29  
最後一個alert應顯示frm1,但卻顯示了OBJECT,我懷疑是它誤取了<input type="hidden" id="id"

<form id="frm1" name="frm1">
<input type="hidden" id="id" name="id" value="123" />	
<input type="text" id="telephone" name="telephone" value="1234567" />	
<input type="submit" onclick="javascript:alert('correct: ' + $('telephone').value);alert('correct: ' + $('telephone').id);alert('correct: ' + $('id').value);alert('wrong: ' + $('frm1').id);" />	
</form>	
0 请登录后投票
   发表时间:2008-01-29  
这个不是Prototype的bug,这个是DOM默认的行为,就是把下级对象的id name扩展为自己的属性名,如果重名当然覆盖原有属性,解决方法很简单就是使用getAttribute获得属性id name等等,但是ie还是有bug,就是getAttribute("id")还是object,需要加参数2,就是getAttribute("id",2)但是覆盖了的属性就丢失了在ie下,返回null,并且获得元素应该这样obj.elements["id"]这样
0 请登录后投票
   发表时间:2008-01-30  
怀疑楼主为什么一定更要id="id",这种本身我觉得责怪任何一方的实现,因为自己是完全可以避免的,而且写成id="id",也是不妥的。
0 请登录后投票
   发表时间:2008-01-30  
其實我也不想這樣...無奈現有的field的名稱的而且確是id而且不能更改..如果所有id也改為其他名稱相信是一件痛苦的事...

謝謝各位了!
0 请登录后投票
   发表时间:2008-01-31  
為何我用
alert(document.getElementById("frm1").getAttribute("id",2));

返回的依然是null?
0 请登录后投票
   发表时间:2008-01-31  
o...對不起...看來我誤會了各位的意思...
請問是不是這樣

假如需要獲取叫id的element時可使用obj.elements['id']
但假如需要獲取obj的id理論上可以使用
alert(document.getElementById("frm1").getAttribute("id",2));
但實際上ie把它丟失了,因此它只返回null
換句話說是沒有任何辦法了對嗎?
0 请登录后投票
   发表时间:2008-01-31  
也不是没有任何办法,outerHTML里面还有
0 请登录后投票
   发表时间:2008-01-31  
???如何利用outerHTML呢??
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics