【问题标题】:How can I call a Javascript function multiple times from C# Code-Behind? It's only executing once如何从 C# Code-Behind 多次调用 Javascript 函数?它只执行一次
【发布时间】:2014-07-18 09:53:53
【问题描述】:

我目前正在处理一个项目,为此我需要从 C# Code-Behind 调用具有多个参数的 JavaScript 函数,因为控件是动态创建的(在代码隐藏中)。

我决定打开一个新项目,只是为了测试一个基本的 JavaScript,它的功能只有一个参数,看看它是否可以工作,但即使这样我也很不成功。

我尝试阅读我在网上找到的许多其他答案,包括在 stackoverflow ofcourse 上。大多数人只是告诉我,我必须给每个文本框一个 ID,或者我必须更改 registerclientscriptblockregisterstartupscript 方法中的“key”属性,这两种方法我都尝试过,但都没有成功。我想我的 JavaScript 函数也可能有问题,这不是我的强项(在电影中听到这个词,喜欢它,但不是电影)。如果可以并且愿意,请帮助我。

我正在做的是创建一些文本框,为它们提供 ID 并将客户端 ID 作为参数传递给 JavaScript 函数,这应该只是改变它们的背景颜色和文本颜色。

发生的情况是,只有一个文本框(插入函数的最后一个)显示了 JavaScript 所做的更改,但我当然希望所有文本框都显示这些更改。

这是脚本:

我添加window.onload 的唯一原因是因为在此之前我遇到了空异常。我确信有更好的,也许是正确的方式来做到这一点,但我不知道。

这是程序的代码隐藏和结果/输出:

【问题讨论】:

  • 欢迎来到 StackOverflow,您应该将脚本作为脚本包含在问题中,而不是图像中 :)
  • 为什么在函数 call_me 中你有 window.onload 当你通过后面的代码调用它时。 . . .欢迎来到 SO :)
  • 好故事.....欢迎来到 SO
  • 我使用了 window.onload,因为没有它我得到空异常,我不知道还能做什么。
  • 你必须用script 块包装script_to_load 字符串变量

标签: c# javascript jquery asp.net


【解决方案1】:

这里,问题是你写“window.onload”。您必须从您的代码中删除。

你可以这样做。

1) 将脚本放入 Head.

    <script type="text/javascript">
      function call(id) {
             var field = document.getElementById(id);
             field.style.color = 'red';
             field.style.backgroundColor = 'yellow';

      }
    </script>

2) 在正文中创建表单。

 <form runat="server">
    <div id="text" runat="server"></div>
 </form>      

3) 将 c# 代码放入 Page_Load 方法中。

  for (int i = 0; i < 5; i++)
  {
      TextBox tb = new TextBox();
      tb.ID = "textbox" + i;
      tb.Text = "Textbox"+i;
      panel.Controls.Add(tb);
      text.Controls.Add(panel);
      ClientScript.RegisterStartupScript(this.GetType(), "textbox" + i, "<script>call('textbox" + i + "');</script>", false);
  }

这清楚吗?如果你有任何问题。让我知道。

【讨论】:

  • 嗨,在尝试这个之后,我得到一个空异常。 “JavaScript 运行时错误:无法获取未定义或空引用的属性 'style'”。
  • 请查看浏览器创建的文本框开发工具的id。
猜你喜欢
  • 2015-12-06
  • 2013-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多