行脚本代码不使用方法



我在 .aspx page(html markup)中有一个脚本:

<div id="alert">
    <asp:Label ID="lblAlert" style="font-size: xx-large" runat="server"></asp:Label>
</div>
<!-- /.alert -->
<script>
    function AutoHideAlert(v) {
        var al = document.getElementById('<%=lblAlert.ClientID%>');
        al.innerText = v;
        $("#alert").fadeTo(3500, 500).slideUp(1500, function () {
            $("#alert").slideUp(500);
        });
    }
</script>

我在 aspx.cs file(code-behind)中调用AutoHideAlert(v)函数,使用RegisterStartupScript,我在ShowMessage中添加了RegisterStartupScript

private void ShowMessage(string msg)
{
    ScriptManager.RegisterStartupScript(this, GetType(), null, "AutoHideAlert('"+msg+"');", true);
}

问题是我调用ShowMessage方法,该方法包含脚本代码行不起作用。但是,当我运行脚本代码行时,它的工作原理;问题是为什么它不使用ShowMessage

运行

编辑1:从 @m4n的评论中,我通过将第三个参数设置为"Alert Message",但它仍然不起作用。

private void ShowMessage(string msg)
{
    ScriptManager.RegisterStartupScript(this, GetType(), "Alert Message", "AutoHideAlert('"+msg+"');", true);
}

我想ScriptManager.RegisterStartupScript在生成方法的脚本之前会生成脚本。正如JS目前执行浏览器所读取的那样,因此在执行AutoHideAlert时,如果不存在尝试使用$(document).ready是您有jQuery

ScriptManager.RegisterStartupScript(this, GetType(), "Alert Message",
     "$(document).ready(function(){ AutoHideAlert('"+msg+"'); }", true);

document.addEventListener('DOMContentLoaded'无jquery

ScriptManager.RegisterStartupScript(this, GetType(), "Alert Message",
     "document.addEventListener('DOMContentLoaded', 
                                function(){ AutoHideAlert('"+msg+"'); })", true);

相关内容

  • 没有找到相关文章

最新更新