这样不行?用setAttribute也不行?

winder 2006-09-22 01:42:58
<input type="text" id="t"> <script>t.name = "tname";</script> 这样不行?用setAttribute也不行?
...全文
361 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
fosjos 2006-09-25
  • 打赏
  • 举报
回复
这样吧
我给个测试代码,大家有空帮忙试试:

<input type="button" value="test" onclick="this.name='aa';alert(document.getElementsByName('aa')[0]);alert(this.name);this.id='bb';alert(document.getElementById('bb').name)">

我的IE显示结果是:
undefined
aa
aa
RexZheng 2006-09-25
  • 打赏
  • 举报
回复
<input type="text" id="t" name="X">
<input type="button" value="name=X" onclick="document.getElementById('t').name='X';document.getElementsByName('X')[0].value='Hey'">


可以啊
chaircat 2006-09-25
  • 打赏
  • 举报
回复
可是我查看脚本编辑器里的对象浏览器,发现name属性并不是只读...
不是没有显示,因为document属性就显示了只读...

Property name As String
MSHTML.HTMLInputElement 的成员
---------------------------------------------
Property document As Object
只读
MSHTML.HTMLInputElement 的成员
oldcsdn 2006-09-25
  • 打赏
  • 举报
回复
<input type="text" id="t" name="t">
winder 2006-09-25
  • 打赏
  • 举报
回复
0009(夏天以南) ( ) 信誉:96 Blog 2006-9-25 12:22:07 得分: 0



<input type="text" id="t" name="X">
<input type="button" value="name=X" onclick="document.getElementById('t').name='X';document.getElementsByName('X')[0].value='Hey'">


可以啊




******************************
<input type="text" id="t" name="X">
******************************
RexZheng 2006-09-25
  • 打赏
  • 举报
回复
<input type="text" id="t" name="T">
RexZheng 2006-09-25
  • 打赏
  • 举报
回复
<input type="text" id="t" name="X">

你本身就给它设置了名字为X.


大哥,看清楚了

<input type="text" id="t" name="T">
<input type="button" value="name=X" onclick="document.getElementById('t').name='X';document.getElementsByName('X')[0].value='Hey'">

一开始是name="T"
hbhbhbhbhb1021 2006-09-25
  • 打赏
  • 举报
回复
看了上面Amwpfiqvy(布衣神相) 的,我想起我很久以前的项目中用过改变名字,可以提交并且接收的,情况只是change the name used for submitting elements这种的,:)
Apq001 2006-09-25
  • 打赏
  • 举报
回复
给你来个真正权威的解释,英文的,摘自MSDN:

Microsoft JScript allows the name to be changed at run time. This does not cause the name in the programming model to change in the collection of elements, but it does change the name used for submitting elements.

The [NAME] attribute cannot be set at run time on elements dynamically created with the createElement method. To create an element with a [name] attribute, include the attribute and value when using the createElement method.

其中用中括号部分在MSDN上是黑体显示。
winder 2006-09-25
  • 打赏
  • 举报
回复
meizz(梅花雪) ( ) 信誉:709 Blog 2006-9-25 13:12:02 得分: 0
在IE里对象的 name 是只读的。

这应该是权威的解释。



winder 2006-09-25
  • 打赏
  • 举报
回复
<input type="text" id="t" name="X">

你本身就给它设置了名字为X.
RexZheng 2006-09-25
  • 打赏
  • 举报
回复
<input type="text" id="t" name="T">
<input type="button" value="name=X" onclick="document.getElementById('t').name='X';document.getElementsByName('X')[0].value='Hey'">

这就不行了,你那都是X,根本没改。

-------------------
???


将name改为X: document.getElementById('t').name='X';

测试修改结果:document.getElementsByName('X')[0].value='Hey'
fosjos 2006-09-25
  • 打赏
  • 举报
回复
不知各位测试
<input name="aa" type="button" value="test" onclick="this.name='bb';alert(document.getElementsByName('aa')[0].name);">
结果是不是:bb
meizz 2006-09-25
  • 打赏
  • 举报
回复
在IE里对象的 name 是只读的。
fosjos 2006-09-25
  • 打赏
  • 举报
回复
再来一个有意思的:

<input name="aa" type="button" value="test" onclick="this.name='bb';alert(document.getElementsByName('aa')[0].name);">
winder 2006-09-25
  • 打赏
  • 举报
回复
<input type="text" id="t" name="T">
<input type="button" value="name=X" onclick="document.getElementById('t').name='X';document.getElementsByName('X')[0].value='Hey'">

这就不行了,你那都是X,根本没改。
fosjos 2006-09-22
  • 打赏
  • 举报
回复
大哥,有没有理解我的意思:
id用js改了后,document.getElementById("new_id")有效
name用js改了后,document.getElementsByName("new_name")[0]无效
lantersen 2006-09-22
  • 打赏
  • 举报
回复
/**
遇到相同问题了:
*/
在追加结点前,判断下是否已存在相同ID的结点;
fosjos 2006-09-22
  • 打赏
  • 举报
回复
遇到相同问题了:
var obj = document.getElementById("txt");//<input id=txt name=txt>
obj.id="txt1";
obj.name="txt2";

alert(document.getElementById("txt1")==obj);//返回true
alert(document.getElementsByName("txt2")[0]);//返回undefined
alert(document.getElementsByName("txt")[0]==obj);//返回true
alert(obj.name);//返回txt2
这个真的很郁闷,id有效,name无效,真怀疑我的IE是不是有问题:
现在每次document.createElement("...")都加上name=...
大家都帮忙试试,还有FireFox
lantersen 2006-09-22
  • 打赏
  • 举报
回复
本地测试,好像可以取到,windowXP+IE6.0
<BODY>
<input type="text" id="t">
<script>
document.getElementById('t').setAttribute('name',"tname");
</script>
<INPUT TYPE="button" NAME="" value="Get!" onclick="g();return true;">
</BODY>
</HTML>
<script>
function g()
{
var tn = document.getElementById('t');
alert(tn.getAttribute("name"));
}

</script>
加载更多回复(7)

87,992

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧