Javascript 事件目标在我的blazor项目中不起作用

Javascript 事件目标在我的blazor项目中不起作用,javascript,blazor,Javascript,Blazor,我试着点击一个元素并得到偏移位置。我正在尝试使用以下javascript代码执行此操作: window.ShowAlert = function myFunction(event) { console.log("Hello World."); alert(event.target.offsetTop); } 此代码位于wwwroot和Index.razor中的文件夹中,我有以下代码: @inject IJSRuntime jsRuntime <div>

我试着点击一个元素并得到偏移位置。我正在尝试使用以下javascript代码执行此操作:

window.ShowAlert = function myFunction(event) {   
    console.log("Hello World.");
    alert(event.target.offsetTop);
}
此代码位于wwwroot和Index.razor中的文件夹中,我有以下代码:

@inject IJSRuntime jsRuntime

<div>
    <Member OnClick="MemberFunction" />
</div>

@code {
    void MemberFunction()
    {
        jsRuntime.InvokeAsync<object>("ShowAlert");
    }
}
@inject IJSRuntime
@代码{
void MemberFunction()
{
jsRuntime.InvokeAsync(“ShowAlert”);
}
}
当我运行此命令时,控制台日志会按预期显示,但警报没有显示,我尝试将警报更改为“Hello World”并正常工作,问题是
事件。target
。 为什么偏置位置的警报不工作


感谢您的关注。

您可以使用@ref:

@inject IJSRuntime jsRuntime

<div>
    <Member @onclick="MemberFunction" @ref="memberRef"/>
</div>

@code {

    private ElementReference memberRef;
    void MemberFunction()
    {
        jsRuntime.InvokeAsync<object>("ShowAlert", memberRef);
    }
}
注意

我将OnClick改为@OnClick


您可以在BlazorFiddle上看到一个演示->

当您调用函数时,并没有为事件传递任何内容。所以在myFunction中事件将为null。@TonyAbrams哦,好的,那么我如何传递单击的对象呢?查看文档,您只需将其传递给Invoke Async方法。我只想通过补偿,但那是我。例如:jsRuntime.InvokeAsync(“showart”,offsetTop);Docs>我无法传递offsetTop,因为它是一个javascript属性,并给我一个错误,我需要传递的是我单击的对象。我正在寻找文档试图找到解决方案。嗯,警报显示为我,但显示为我未定义。现在的问题是什么?如果我只放元素,它会给我它的值。那么offsetTop是未定义的吗?好的,我在我的成员中发现了问题,我正在做一个onClick事件,传递一个参数,元素就是我传递的参数。这就是为什么我不能得到它的位置。检查我的更新,我运行的代码给出了一个位置警报。是的,这是我的坏原因,我以前没有注意到,现在我需要重新考虑如何做。基本上我的元素是一个成员列表的参数,所以我不能得到它的位置,只能得到它的值。在您的情况下,它是有效的,因为您的元素引用是对成员组件的引用,而不是它的一个参数(如我)。这完全是我的错。感谢您的关注和帮助。我很感激。我告诉您问题所在的代码部分是:
@onclick=“@(()=>onclick.InvokeAsync(member.MemberFamilyName))
window.ShowAlert = function myFunction(element) {   
    console.log("Hello World.");
    alert(element.offsetTop);
}