我在文档中准备了一个函数:
$(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');
}
});
答案 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();
});