现在碰到一个问题。表单是动态生成的,个数是不确定的,特定的表单需要生产点击按钮,点击函数中如何获取特定表单节点啊。
本来以为getElementsByName,可以解决问题,可是在网上查的时候说IE不支持getElementsByName。难道JavaScript就不能通过参数传递获取特定的节点吗?请高手指点,谢谢!
本来以为getElementsByName,可以解决问题,可是在网上查的时候说IE不支持getElementsByName。难道JavaScript就不能通过参数传递获取特定的节点吗?请高手指点,谢谢!
不过最好还是按个规则定出有规律的ID比较好,用getElementById最好
然后判断每个 form 的 name
但是 IE 应该支持 getElementsByName 吧,除非那个标签不支持 name ,比如 <span></span>对于 form 是可以通过
getElementsByName("...")[下标]
来得到特定表单的
取得的是个数组 <INPUT TYPE="text" NAME="t1" value="111">
<INPUT TYPE="text" NAME="t1" value="222">
<INPUT TYPE="text" NAME="t1" value="333">
<SCRIPT LANGUAGE="JavaScript">
alert(document.getElementsByName("t1")[1].value);
</SCRIPT>或者可以把form.name作为函数的参数……
LZ最好能帖代码, 标明哪一部分是自动生成的,哪一部分是可以控制的……
function addMore(hao)
{
var td=document.getElementsByName("ttd");
var br=document.createElement("br");
var input=document.createElement("input");
var button=document.createElement("input");
var input1=document.createElement("input");
input.type="file";
input.name="file";
input.size="1";
button.type="button";
button.value="删除";
button.size="1";
input1.type="hidden";
input1.name="filename";
input1.value=td[hao].firstChild.nextSibling.value;
alert(input1.value);
button.onclick=function()
{
td[hao].removeChild(br);
td[hao].removeChild(input);
td[hao].removeChild(input1);
td[hao].removeChild(button);
}
td[hao].appendChild(br);
td[hao].appendChild(input);
td[hao].appendChild(button);
td[hao].appendChild(input1);
}
</script><%...........//省略的部分为一个循环。else if是在这个循环下面
else if(rs.getString("col3")!=null&&!rs.getString("col3").equals(""))
{
%>
<tr style="font-size:13">
<td align="right" width="100"><%=rs.getString("col0") %></td>
<td align="right" width="300"><%=rs.getString("col1") %></td>
<td align="right" width="400"><%=rs.getString("col4") %></td>
<td align="right" width="300">
<input type="text" name="col2" size="30" value="<%=rs.getString("col2") %>">
<input type="hidden" name="hao" value="<%=rs.getString("col0") %>">
</td>
<td align="right" width="200" name="ttd">
<input type="hidden" name="filename" value="<%=rs.getString("col0") %>">
<input type="file" name="file" size="1">
<input type="button" value="继续添加..." onClick="addMore(<%=a %>)" size="1">
</td>
</tr>
<%
a++;
}
........
我列出来了部分代码,这段代码主要作用是动态的产生上传文件的按钮,能随时添加上传文件的按钮,同时产生一个type="hidden"的input,且input的value是<%=rs.getString("col0") %>,上面的代码在火狐浏览器中好用,但是在IE中就会提示:'firstChild'为空或不是对象。请高手指点,谢谢!
改成
var td=document.getElementsByName("ttd")[0];
我对上面的函数改了一下,
onClick="addMore(<%=a %>)" 改为onClick="addMore(<%=a %>,'<%=rs.getString("col0") %>')",
function addMore(hao)改为function addMore(hao,hao1),
input1.value=td[hao].firstChild.nextSibling.value;改为input1.value=hao1;
同样在火狐中效果理想,但是在IE中就出现'undefined'为空或不是对象。都郁闷死了,哪位高手帮帮啊,小弟在此谢谢了!
input之类的用getElementsByName没问题
把lz的代码改成了这个样子
要是table加不了id的话,就只能用getElementsByTagName试试了 <TABLE id="ttable">
<tr style="font-size:13">
<td align="right" width="100">"col0"</td>
<td align="right" width="300">"col1"</td>
<td align="right" width="400">"col4"</td>
<td align="right" width="300">
<input type="text" name="col2" size="30" value="col2">
<input type="hidden" name="hao" value="col0">
</td>
<td align="right" width="200" name="ttd">
<input type="hidden" name="filename" value="col0">
<input type="file" name="file" size="1">
<input type="button" value="继续添加..." onClick="addMore(0,'col0')" size="1">
</td>
</tr>
<tr style="font-size:13">
<td align="right" width="100">"col0"</td>
<td align="right" width="300">"col1"</td>
<td align="right" width="400">"col4"</td>
<td align="right" width="300">
<input type="text" name="col2" size="30" value="col2">
<input type="hidden" name="hao" value="col0">
</td>
<td align="right" width="200" name="ttd">
<input type="hidden" name="filename" value="col0">
<input type="file" name="file" size="1">
<input type="button" value="继续添加..." onClick="addMore(1,'col0')" size="1">
</td>
</tr>
</TABLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
function addMore(hao,hao1)
{
var tab = document.getElementById("ttable");
var td=tab.rows[hao].cells[4];
var br=document.createElement("br");
var input=document.createElement("input");
var button=document.createElement("input");
var input1=document.createElement("input");
input.type="file";
input.name="file";
input.size="1";
button.type="button";
button.value="删除";
button.size="1";
input1.type="hidden";
input1.name="filename";
input1.value=hao1;
button.onclick=function()
{
td.removeChild(br);
td.removeChild(input);
td.removeChild(input1);
td.removeChild(button);
}
td.appendChild(br);
td.appendChild(input);
td.appendChild(button);
td.appendChild(input1);
}
</SCRIPT>