Form.element["..."]出错!

ohmycola 2008-06-13 04:49:48
废话不说,看代码

<html>
<head>Test Page
<script type="text/javascript">
var PXID = 100;
function add(){
PXID++;
var PTR = document.createElement("TR");
var PTD01 = document.createElement("TD");
var PTD02 = document.createElement("TD");
var PIN01 = document.createElement("INPUT");PIN01.type="text";PIN01.name="INS_"+PXID+"_ZPROJText01";
var PIN02 = document.createElement("INPUT");PIN02.type="text";PIN02.name="INS_"+PXID+"_ZPROJText02";
PTD01.appendChild(PIN01);PTR.appendChild(PTD01);
PTD02.appendChild(PIN02);PTR.appendChild(PTD02);
var PMyTBODY = document.getElementById("MyTBODY");
PMyTBODY.appendChild(PTR);
}


function my_click(){
var PForm = document.form1;
alert(PForm.elements["INS_101_ZPROJText01"].name);
}
</script>
</head>
<body>
<form name='form1'>
<table>
<tbody id='MyTBODY'>
<tr>
<td><input type='text' name='INS_100_ZPROJText01'/></td>
<td><input type='text' name='INS_100_ZPROJText02'/></td>
</tr>
</tbody>
</table>
<input type='button' value='Add' onclick='add()'/>
<input type='button' value='Click' onclick='my_click()'/>
</form>
</body>
</html>

为什么在点Add的时候会出错啊,看不出错在哪里。
哪位大大能帮忙看下
...全文
117 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
ohmycola 2008-06-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wren4255 的回复:]
JScript code var td2 = document.createElement("td");

var input1 = document.createElement("input");

input1.setAttribute("type","text");

input1.id = "fieldMeisaiNumber_" + _rowCount;




这是我写的好用的
PIN01.name="INS_"+PXID+"_ZPROJText01"; //是不是PIN01.id??

[/Quote]

好像用id也可以取到。。。用id的话我直接用$("INS_101ZPROJText01")了
但是name应该也可以啊,看msdn的说明http://msdn.microsoft.com/en-us/library/ms537449.aspx
wren4255 2008-06-16
  • 打赏
  • 举报
回复
	    var td2 = document.createElement("td");

var input1 = document.createElement("input");

input1.setAttribute("type","text");

input1.id = "fieldMeisaiNumber_" + _rowCount;



这是我写的好用的
PIN01.name="INS_"+PXID+"_ZPROJText01"; //是不是PIN01.id??
mingxuan3000 2008-06-16
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20080605/20/20a3ca1d-c3ca-4aca-b511-6df28dae59dd.html

7楼的回复
ohmycola 2008-06-16
  • 打赏
  • 举报
回复
感谢楼上各位的回答

document.form1.elements["INS_100_ZPROJText01"];是能取到东西的,但是后面点add动态创建出来的
INS_101_ZPROJText01,INS_102_ZPROJText01...等等对象通过elements[name]就取不到了。我感到疑惑的
是这个。

debug的时候发现INS_101_ZPROJText01的name属性有值的阿,只是outerhtml没。。。
难道elements方法取值是通过innerhtml取的?

试了下showbo大大的办法,似乎可以。而且这个问题确实是在ie有,ff下正常。。。只能解释为ie的bug了?
ohmycola 2008-06-16
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 mumuTiger 的回复:]
直接 alert(PForm.INS_101_ZPROJText01.name);
[/Quote]

恩,这样确实可以,但是当input结点的名字不固定的时候,这样写就有局限性了。
比如
function getValue(int i){
return document.form1.elements["INS_"+i+"_ZPROJText01"];
}
jackyBody 2008-06-16
  • 打赏
  • 举报
回复
直接 alert(PForm.INS_101_ZPROJText01.name);
jhwcd 2008-06-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 mingxuan3000 的回复:]
http://topic.csdn.net/u/20080605/20/20a3ca1d-c3ca-4aca-b511-6df28dae59dd.html

7楼的回复
[/Quote]
ohmycola 2008-06-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 mingxuan3000 的回复:]
http://topic.csdn.net/u/20080605/20/20a3ca1d-c3ca-4aca-b511-6df28dae59dd.html

7楼的回复
[/Quote]

var PIN01=document.createElement(" <input name=INS_"+PXID+"_ZPROJText01 />');
PIN01.type="text";
...
mingxuan兄是这个意思吧,我试了下,似乎行添加不对了


楼上各位已经提供了多种绕过这个问题的解决方法,谢谢大家
现在的疑问主要是form.elements[name]方法到底是通过什么样的机制去取得对象的,这个我在网上找了半天也没
找到一个详细的说法。。
浴火_凤凰 2008-06-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 s_liangchao1s 的回复:]
JScript code
function my_click(){
var PForm = document.form1.elements["INS_100_ZPROJText01"]; //这才有意义
alert(PForm.name);
}
[/Quote]
Go 旅城通票 2008-06-13
  • 打赏
  • 举报
回复
那样创建text时在ie把name属性去掉了..........汗......

这样可以
function add(){ 
PXID++;
var PTR = document.createElement("TR");
var PTD01 = document.createElement("TD");
PTD01.innerHTML="<input type='text' name='INS_"+PXID+"_ZPROJText01'/> "
var PTD02 = document.createElement("TD");
PTD02.innerHTML="<input type='text' name='INS_"+PXID+"_ZPROJText02'/> "
//var PIN01 = document.createElement("INPUT");PIN01.type="text";PIN01.name="INS_"+PXID+"_ZPROJText01";
//var PIN02 = document.createElement("INPUT");PIN02.type="text";PIN02.name="INS_"+PXID+"_ZPROJText02";
PTR.appendChild(PTD01);
PTR.appendChild(PTD02);
var PMyTBODY = document.getElementById("MyTBODY");
PMyTBODY.appendChild(PTR);
}
Go 旅城通票 2008-06-13
  • 打赏
  • 举报
回复
ie实现可能有bug,在ff下点add后没有出现错误,

如果没点过add,ie和ff都有错误...
s_liangchao1s 2008-06-13
  • 打赏
  • 举报
回复

function my_click(){
var PForm = document.form1.elements["INS_100_ZPROJText01"]; //这才有意义
alert(PForm.name);
}

familyX 2008-06-13
  • 打赏
  • 举报
回复
alert(PForm.elements["INS_101_ZPROJText01"].name); 


改为:
alert(PForm.elements[0].name); 
hushukui 2008-06-13
  • 打赏
  • 举报
回复
function my_click(){
var PForm = eval(document.form1.elements["INS_100_ZPROJText01"]);
alert(PForm.name);
}
ohmycola 2008-06-13
  • 打赏
  • 举报
回复
纠正一点
是先点add按钮追加出若干行后点
Click按钮的时候出错!

87,920

社区成员

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

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