var a=document.getElementsByName("a"); //判断是否是input if( a[0].rows[0].cells[0].firstChild.nodeName=="INPUT") { var input11=a[0].rows[0].cells[0].firstChild.value; } //判断是否是select if( a[0].rows[0].cells[1].firstChild.nodeName=="SELECT") { var i=a[0].rows[0].cells[1].firstChild.selectedIndex; var input12= a[0].rows[0].cells[1].firstChild.options[i].innerText;
当然上述元素也可以赋ID值, 赋ID值的时候引用这些元素的方法就要变一下了. 赋 name: document.formName.inputName document.frames("frameName") 赋 ID : document.all.inputID document.all.frameID 只能赋ID不能赋name的元素:(除去与表单相关的元素都只能赋ID) body li a table tr td th p div span pre dl dt dd font b 等等
你都用了getElementsByTagName还不知道tag名?
function jisuan()
{
var a=document.getElementsByName("a");
//判断是否是input
if( a[0].rows[0].cells[0].firstChild.nodeName=="INPUT")
{
var input11=a[0].rows[0].cells[0].firstChild.value;
}
//判断是否是select
if( a[0].rows[0].cells[1].firstChild.nodeName=="SELECT")
{
var i=a[0].rows[0].cells[1].firstChild.selectedIndex;
var input12= a[0].rows[0].cells[1].firstChild.options[i].innerText;
}
}
<table id="a">
<tr>
<td>
<input id="Text1" type="text" />
</td>
<td>
<select id="Select1" style="width: 173px" onclick="jisuan();">
<option >1</option>
<option>2</option>
</select>
</td>
</tr>
</table>
为什么Table不能getElementsByName,解释下!不是都有ID吗!为什么不能?即使用getElementsByTagName也可以获取Table数组
下面的未经过测试:有错误自己修改!var a=new arry;
a=document.getElementsByTagName("table")
for(var i=0;i<a.lenth;i++)
{
//判断是否是你要的TAble
if(a[i].name=="a")
}
但问题的关键在document.getElementsByName("a");
因为我的一个document里有几个table,每个table的内容都不同,所以不能用document.getElementsByName("a"),如果能有table.getElementsByName("a")方法那就好了,现在是table不支持这个方法。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<script>
function add(){
var o11 = document.getElementsByName('input11');
var o12 = document.getElementsByName('input12');
var o13 = document.getElementsByName('input13');
var num = parseInt(o11.length)+ parseInt(o12.length)+ parseInt(o13.length);
var sum = 0;
var ovalue1 = 0;
for(var i=0;i<o11.length;i++){
if(o11[i].type=="text"&&o11[i].value!=""){
ovalue1 =parseInt(ovalue1)+parseInt(o11[i].value);
}else if(o11[i].type!="text"){
ovalue1 =parseInt(ovalue1)+parseInt(o11[i].options[o11[i].selectedIndex].text);
}
}
alert(ovalue1);//差不多了 没时间了 你自己扩展}
</script>
</HEAD> <BODY>
<table id='a'>
<tr> <td> <input name='input11'/> </td> <td> <select name='input11'><option value="11">11</option><option value="22">22</option> </td> </tr>
<tr> <td> <input name='input21'/> </td> <td> <input name='input22'/> <td> </tr>
<tr> <td> <input name='input31'/> </td> <td> <input name='input32'/> </td> </tr>
</table> <input type="button" value="add" onclick="add()">
</BODY>
</HTML>
它的作用就是取出所有name一样的table! function jisuan()
{
var a=document.getElementsByName("a");
if(a.length>0)
{
for(var j=0;j<a.length;j++)
{
//判断是否是input
if( a[j].rows[0].cells[0].firstChild.nodeName=="INPUT")
{
var input11=a[j].rows[0].cells[0].firstChild.value;
}
//判断是否是select
if( a[j].rows[0].cells[1].firstChild.nodeName=="SELECT")
{
var i=a[j].rows[0].cells[1].firstChild.selectedIndex;
var input12= a[j].rows[0].cells[1].firstChild.options[i].innerText;
}
}
}
}<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
<script type="text/javascript" src=JScript.js></script>
</head>
<body >
<form id="form1" runat="server">
<div>
<table id="a">
<tr>
<td>
<input id="Text1" type="text" />
</td>
<td>
<select id="Select1" style="width: 173px" onclick="jisuan();">
<option >1</option>
<option>2</option>
</select>
</td>
</tr>
</table>
<table id="a">
<tr>
<td>
<input id="Text2" type="text" />
</td>
<td>
<select id="Select2" style="width: 173px" onclick="jisuan();">
<option >1</option>
<option>2</option>
</select>
</td>
</tr>
</table>
</div>
</form>
</body>
</html>
楼主最好了解一些DOM!
a=document.getElementsByTagName("table")
for(var i=0;i<a.lenth;i++)
{
//判断是否是你要的TAble
if(a[i].name=="a")
}a[i].getElementsByName('input11');这不能通过啊,提示对象不支持此属性和方法。
table根本不支持getElementsByName方法<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<script> function test(){
var obj= document.getElementsByName('a'); var obj1= obj.getElementsByName('input1'); }
</script>
</HEAD>
<BODY>
<table name='a'>
<tr> <td> <input name='input1'/> </td> <td> <input name='input2'/> <td> </tr>
<tr> <td> <input name='input1'/> </td> <td> <input name='input2'/> </td> </tr>
</table> <input type="button" value="test" onclick="test()">
</BODY>
</HTML>上面这段代码在你的IE中能通过吗
这些元素都与表单(框架元素作用于form的target)提交有关, 在表单的接收页面只
接收有name的元素, 赋ID的元素通过表单是接收不到值的.
当然上述元素也可以赋ID值, 赋ID值的时候引用这些元素的方法就要变一下了.
赋 name: document.formName.inputName document.frames("frameName")
赋 ID : document.all.inputID document.all.frameID 只能赋ID不能赋name的元素:(除去与表单相关的元素都只能赋ID)
body li a table tr td th p div span pre dl dt dd font b 等等
那么我用table.getElementsByTagname不行,用table.getElementsByName也不行,不支持此方法。
如果在动态生成时给每个元素赋一个唯一的ID,那么在动态生成时还得记录这些ID,然后才能通过getElementByid的方法找到这些元素。
回楼上:
你把 <table name='a'>改成ID不就可以了,或者添加一个一样名字的ID=“a”
改为ID,table.getElementsByName方法照样不行。
另外,没有什么table支不支持getElementsByName的,都支持,只要你给他一个域。一般用的document是全局的。向上面人说的,先用getElementById得到这个table的obj,在用obj.getElementsByName就ok了!
简单点,简单点!
<head>
<title></title>
</head>
<body>
<table id='a'>
<tr> <td> <input name='input11' /> </td> <td> <input name='input12'/> </td> </tr>
<tr> <td> <input name='input21' /> </td> <td> <input name='input22'/> <td> </tr>
<tr> <td> <input name='input31'/> </td> <td> <input name='input32'/> </td> </tr>
</table> <table id='a'>
<tr> <td> <input name='input11'/> <td> <select name='input12'/> </td> </tr>
<tr> <td> <input name='input21'/> <td> <select name='input22'/> </td> </tr>
<tr> <td> <input name='input31'/> <td> <select name='input32'/> </td> </tr>
</table> <table id='a'>
<tr> <td> <input name='input11'> </td> <td> <select name='input12'> </td> </tr>
<tr> <td> <input name='input21'> </td> <td> <input name='input22'> </td> </tr>
<tr> <td> <input name='input31'> </td> <td> <input name='input32'> </td> </tr>
</table>
<!--计算-->
<script>
function sum()
{
//input11*input12+input21*input22+input31*input32
var cnt11=document.getElementsByName("input11").length;
var cnt12=document.getElementsByName("input12").length;
var cnt21=document.getElementsByName("input21").length;
var cnt22=document.getElementsByName("input22").length;
var cnt31=document.getElementsByName("input31").length;
var cnt32=document.getElementsByName("input32").length; var sum=cnt11*cnt12*cnt21*cnt22*cnt31*cnt32;
alert('结果'+sum);
} sum();
</script>
</body>
</html>