使用JavaScript查找发件人

使用JavaScript查找发件人,javascript,gridview,Javascript,Gridview,我试图找出GridView中的哪个按钮正在调用JavaScript函数,方法是找出它在哪一行。我正在使用ASP.NET。以下是必要的代码: JavaScript函数(仅是重要部分): 函数获取注释(发送方){ //... var grid=document.getElementById(“”); var r=1; 对于(变量i=1;i

我试图找出GridView中的哪个按钮正在调用JavaScript函数,方法是找出它在哪一行。我正在使用ASP.NET。以下是必要的代码:

JavaScript函数(仅是重要部分):

函数获取注释(发送方){
//...
var grid=document.getElementById(“”);
var r=1;
对于(变量i=1;i
调用get_notes的按钮(位于模板字段的PartGrid第4列):



我需要找到所单击按钮的行,因为我需要使用ActiveXObject SQL查询的
grid.rows[r].cells[0].innerText
。我知道ActiveXObject和SQL查询工具可以工作,我已经用伪值测试过了。这段代码有什么问题,有没有更好的方法来查找我单击的按钮行?

您确定知道表中有多少行吗?我注意到
I
以初始值1开始,而不是0。第一行将是网格。行[0]
。您还应再次检查单元格是否正确,以及
行是否正确定位了表格

如果这些都是正确的,那么在呈现元素时,函数可能还不存在。这意味着
onclick
事件将无法正确绑定。确保在页面的头部或至少在控件上方的某个位置定义函数。另外,请确保在定义函数之前不要等待
document.onload
事件。在呈现页面之前,您需要它存在

你的基本方法似乎很好。它在这里工作正常:


编辑: 我不知道为什么我以前没有注意到这一点。问题在于
sender
是表示链接按钮的
a
元素。您正在将它与包含它的
td
进行比较。根据HTML输出的结构(特别是,您的
a
是否嵌套在任何其他内容中),您可能需要以下内容:

if (grid.rows[i].cells[4] == sender.parentNode) { 
演示:


请注意,如果您在LinkButton上放置客户端ID/类,和/或使用jQuery,整个任务将变得非常简单。

您在调试器中完成了吗?我们可以看到按钮及其周围生成的一些HTML源代码吗?使用“调试器”;并检查值-它们是否如预期的那样?@Diodeus-这个问题实际上与该问题无关。我使用了调试器;为我的变量生成的代码和值与预期一致。此外,在查看变量及其成员的值时,我找到了一个解决方案。这可能不是最优雅的解决方案,但对我来说很有效。我将一段
grid.rows[I].cells[4].innerHTML
sender.href
进行比较,因为它们都包含有关单击时调用的
javascript:u doPostBack()
函数的信息。此函数的参数对于每行中的每个按钮都是唯一的,因此此解决方案适用于我的上下文。谢谢你的帮助我相信我已经解决了我的问题,请参阅我的上述评论。尽管如此,我不知道为什么我最初的方法不起作用。我从
I=1开始,因为
行[0]
是标题。单元格也是正确的。我相信
工作正常,脚本就在脑子里。当我使用调试器时,它看起来好像是
grid.rows[I].cells[4]
sender
实际上是不同的数据类型,这对我来说似乎很奇怪me@wlyles-你的评论让我打了耳光。我知道问题出在哪里了。看我的编辑。啊,我明白了。真管用!比我的其他解决方案更干净,如果代码需要在以后更新,则更有意义。谢谢你的帮助!
<asp:LinkButton ID="LinkButton3" runat="server" CausesValidation="false" Text="Show" 
    OnClientClick="get_notes(this); return false;" />
if (grid.rows[i].cells[4] == sender.parentNode) {