name属性是个比较复杂的属性
一般这样认为:
用getElementsByName或通过form.name去找一个对象只能用生成DOM树时name的值,其后对name的修改只引起值的改变,而不会改变它在DOM树中的索引值(相当于修改时只是赋了一新name值,而其在DOM树中保存的索引是不变的)。仔细想想字符串的处理,有这样的效果也不足为怪。
一般这样认为:
用getElementsByName或通过form.name去找一个对象只能用生成DOM树时name的值,其后对name的修改只引起值的改变,而不会改变它在DOM树中的索引值(相当于修改时只是赋了一新name值,而其在DOM树中保存的索引是不变的)。仔细想想字符串的处理,有这样的效果也不足为怪。
我name不改的话,提交给jsp得到的东西是错误的
jsp不能通过id得到数值
即:
提交时使用的name是你页面中对其修改后的值,只是DOM树的索引值不会改变。
只是使用更改后的值来getElement不行,如果你只管IE的话,有一个属性你可以试下改用:uniqueID
这个uniqueID是只读的,改不了它,也可以通过getElementById找到它,而它又跟提交那些一点关系都没有。
程序功能:
一:动态增加一行(行的顺序h,行中的列数顺序i),里面的控件名字是f_h_i.
例
举例:
var txt = document.createElement("<input name='txt1'/>");
txt.type = "text";//type需要在append之前设置好,一量append入DOM,就不能再修改
document.body.appendChild( txt );像这样写才行。
程序功能:
一:动态增加一行(行的顺序h,行中的列数顺序i),里面的控件名字是f_h_i.
(例:第一行.第一列为name=f_1_1,第二行,第三列name=f_2_3)
二:把每行的tr标签的id 设置成行号(例:表头的tr.id=0,第一行的tr.id=1);
三:删除一样,如果是删除的不是最后一行,就要把从删除后的左右行的名字向前移动.
(例:我删除第二行,就要把第三行的name=f_3_1,变成f_2_1,
把第四行的name=f_4_1,变成f_3_1.
并把tr.id也由4->3,3->2
)
//////////
js代码:
function inner(tr,num,value) ///设置表头显示的行号第一个td
{
var com = tr.childNodes; //[num];
com[num].innerHTML = value;
}
function reComName(comid,value)
////改控件的名字和id(comid=要修改的控件id,value=修改后的)
{
var com = getComm(comid); ///下面的方法
com.id = value;
com.name = value;
alert("com.name="+com.name+" com.id = value="+com.id );//这里显示的是对的就是name改变了
}function getComm(comid) ///得到comid的控件
{
var com = document.getElementById(comid);
//alert("getComm...."+com.length)
return com;
}
//////////////删除不适合最后一行的代码
function delrow1(r)
{
var o = r.parentNode.parentNode.parentNode;
var num = tbody.getElementsByTagName("tr").length ; //tr number
var delrowid = o.id;
tbody.removeChild( document.getElementById( o.id ) );
var trs = tbody.getElementsByTagName("tr"); ///all tr
("rowid="+delrowid+"<br>trs.length="+trs.length);
for( var x = delrowid ; x< trs.length ;x++ )
{
inner(trs[x] ,0,x);
reComName("f1_"+(parseInt(x,"10")+1)+"_1","f1_"+x+"_1");
alert(x+"==="+document.getElementById("f1_"+x+"_1").name);
}
xh = trs.length;
alert("out___"+document.getElementById("f1_2_1").name)
}
是由于name没有设置,但是id设置了
删除后显示的是
<TD style="BORDER-RIGHT: rgb(0,0,0) 1px groove; BORDER-BOTTOM: rgb(0,0,0) 1px groove"><TEXTAREA class=textarea1 id=f1_3_1 name=f1_4_1 rows=5 cols=31></TEXTAREA></TD>
这样在得到对象的时候,就是null
改变id,name变就是了,假设input 直接位于<td>下级,则:
inputObj.id = inputObj.name = "f_" + inputObj.parentNode.parentNode.rowIndex + "_" input.parentNode.cellIndex;
下一个页面,当数组整个取出来,不就可以了吗?
LZ到底想干嘛?没看出来