从后面的代码访问javascript函数

时间:2013-02-25 12:53:56

标签: c# javascript

我在文档中准备了一个函数:

$(document).ready(function () {
    function test1() {
        alert('successful');
    }
});

现在代码背后(C#)我有这个:

ScriptManager.RegisterStartupScript(this, typeof(Page),"Con121", "test1();", true);

这不会弹出一个警告......但是如果我把它从准备好的功能中取出来工作正常。 我需要这个就可以了。

我甚至试过这样做没有成功:

$(document).ready(function () {
    window.test1 function test1() {
        alert('successful');
    }
});

2 个答案:

答案 0 :(得分:2)

尝试:

var test1;

$(document).ready(function () {
    test1 = function () {
        alert('successful');
    }
});

这里的问题是范围界定。由于您从另一个函数(test1)中声明了函数ready,因此您从代码隐藏中创建的启动脚本将无法从{{{}之外访问它1}}功能。

此外,您需要确保在ready之后触发启动脚本,否则您可能会尝试调用未分配的变量。

最后,如果函数不需要使用jQuery.ready专门声明,只需将其完全移出其中,以便函数声明和赋值都存在于全局范围内。

答案 1 :(得分:0)

(部分)你的问题是你的ScriptManager.RegisterStartupScript调用会将test1();调用放在页面HTML中的某个位置立即执行,但$(document).ready(function () { ... });包含定义<{em>} test1表示在 页面(包括调用)之后已被加载时,该函数不存在。

没有理由等待文档准备好定义你的函数,为什么不直接定义它呢?

或者,为什么不删除ScriptManager.RegisterStartupScript并在定义后立即拨打电话test1();?这将在页面加载完成后立即调用:

$(document).ready(function () {
    function test1() {
        alert('successful');
    }
    test1();
});