使用JavaScript访问中继器值
我在网上搜索了很多,想找到答案,但是我找不到 有人能告诉我如何使用javascript访问内部repeater控件的标签和文本框值吗 这是我的密码使用JavaScript访问中继器值,javascript,.net,repeater,Javascript,.net,Repeater,我在网上搜索了很多,想找到答案,但是我找不到 有人能告诉我如何使用javascript访问内部repeater控件的标签和文本框值吗 这是我的密码 <asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1"> <ItemTemplate> <table id="t1" width="200px:" style="background-color: sky
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1">
<ItemTemplate>
<table id="t1" width="200px:" style="background-color: skyblue" runat="server">
<tr>
<td>
<asp:TextBox ID="TextBox3" Text='<%#DataBinder.Eval(Container.DataItem, "empid")%>'
runat="server" />
<asp:CheckBox ID="CheckBox1" runat="server" />
<asp:Label ID="Label1" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "empid")%>'></asp:Label>
<asp:Label ID="lblname" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "ename")%>'></asp:Label>
<br />
<br />
</td>
</tr>
</table>
</ItemTemplate>
</asp:Repeater>
但我在警报中得到了结果
[对象]
和@deocwalk
我用这种方式尝试了你的代码
但什么也得不到
function GetData() {
var arrTables = document.getElementById('myDiv').getElementsByTagName('table');
var tbl = arrTables[0];
var td = tbl.childNodes[0].childNodes[0].childNodes[0];
var txt = td.childNodes[0];
alert(txt.value);
}
ID必须是唯一的,因此不能对中继器中的所有标签应用相同的ID。改用CSS类名
<asp:Label CssClass="myLabel" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "empid")%>'></asp:Label>
由于jQuery随.NET一起提供,您可以使用它而不是普通的JavaScript来更轻松地访问这些元素
var thisLabel=$('.myLabel').eq(0)
其中0是元素的索引,因为可以有很多元素。将中继器包装在一个具有某个id的div中,例如myDiv
<div id="myDiv">
<!-- your repeater code -->
<asp:Repeater ID="Repeater1" runat="server"...>
<ItemTemplate>
<table>...</table>
</ItemTemplate>
</asp:Repeater>
</div>
现在,arrTables
只是div中所有表元素的数组。查找所需表的序号:例如,为了方便,我选择第一个表
var tbl = arrTables[0];
查找表元素的对应td:
var td = tbl.childNodes[0].childNodes[0].childNodes[0];
以上内容可能会因浏览器加载DOM和其他内容的方式而异。因此我说你自己调试和发现
获得td参考后:
var txt = td.childNodes[0];
这将给出文本框
txt.nextSibling
将给出标签…等等。请提供您询问的相关HTML。我无法发布代码如何发布代码?它的发布方式类似于段落函数submitAll(){var thisLabel=$('.myLabel').eq(0);警报(thisLabel);}
但在警报中,我得到了[object object]是的,它提供了对该对象的引用。可以使用$('.myLabel').eq(0.text()或$('.myLabel').eq(0.html())获取值:但是它只是给出一个值,我必须得到所有的值,所以我如何才能得到中继器的行数,这样我就可以使用它进行循环。我尝试了你的代码,但没有得到它,我把中继器的行数放在。。并通过函数GetData(){var arrTables=document.getElementById('myDiv').getElementsByTagName('table');var tbl=arrTables[0];var td=tbl.childNodes[0]。childNodes[0]。childNodes[0];var txt=td.childNodes[0];警报(txt.value);}
var tbl = arrTables[0];
var td = tbl.childNodes[0].childNodes[0].childNodes[0];
var txt = td.childNodes[0];