我正在使用c#代码运行Javascript。
for(int i=0;i<=2;i++)
{
Page.ClientScript.RegisterStartupScript(GetType(), "a", "foo("hello")", true);
}
Js档案
Function foo(a){
alert(a);
//some other logic
}
这里的问题是,当我调试代码时,我可以看到循环进行3次,但警报只出现一次。
为什么只出现一次?我该如何解决这个问题?
答案 0 :(得分:1)
@Lloyd所说的是正确的,+ i
是制作唯一对的必要条件。
试试这个:
for (int i = 0; i <= 2; i++)
{
Page.ClientScript.RegisterStartupScript(GetType(), "a"+ i, "foo('hello');", true);
}
你错过了javascript函数末尾的分号。
这是用@Lloyd建议的
生成的<script type="text/javascript">
//<![CDATA[
foo("hello")foo("hello")foo("hello")//]]>
</script>
这就是你想要的:
<script type="text/javascript">
//<![CDATA[
foo('hello');foo('hello');foo('hello');//]]>
</script>
</form>
答案 1 :(得分:0)
您使用相同的密钥从MSDN注册启动脚本三次:
启动脚本由其密钥及其类型唯一标识。 具有相同密钥和类型的脚本被视为重复。只有一个 具有给定类型和密钥对的脚本可以在页面中注册。 尝试注册已注册的脚本不会 创建脚本的副本。
启动脚本本身只运行一次。
例如,看看当你这样做时会发生什么:
for(int i = 0; i <= 2; i++)
{
Page.ClientScript.RegisterStartupScript(GetType(), "a" + i, "foo(\"hello\")", true);
}