none
如何在cs文件中调用js代码? RRS feed

  • 问题

  • 我的js代码写在页面中,我需要在用户点button控件后服务器通过验证,然后再在客户端运行一段javascript代码。我使用这样的代码:Response.Write("<script language=javascript>fun();</script>"); fun()函数在页面的js代码中。调试的时候说Microsoft JScript 运行时错误: 缺少对象。
    然后修改代码如下:
    Response.Write("<script language=javascript>function fun(){var mydiv = document.getElementById('abc');mydiv.style.display = 'none';}fun();</script>"); 仍然是Microsoft JScript 运行时错误: 缺少对象。

    我想我大概知道这个错误为什么,是因为button是服务器控件,cs中的代码在服务器执行,而服务器看不见我写在页面的js代码,所以会缺少对象。
    不知道我的想法是否正确?有没有办法能解决我的这个需求?(除了AJAX)
    郭鹏
    2009年2月14日 7:54

答案

  • 1,首先保证id=abc在客户端存在。
    2,一般的做法是:
    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "js", "fun()", true);

    客户端代码:
    <script>
    function fun(){var mydiv = document.getElementById('abc');
    mydiv.style.display = 'none';}
    </script>

    3,如果abc是服务器端控件,则需要

    客户端代码:
    <script>
    function fun(){var mydiv = document.getElementById('<%=abc.ClientID%>');
    mydiv.style.display = 'none';}
    </script>

    孟宪会
    • 已标记为答案 Hugo12345 2009年2月14日 15:02
    2009年2月14日 9:40
    版主

全部回复

  • 1,首先保证id=abc在客户端存在。
    2,一般的做法是:
    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "js", "fun()", true);

    客户端代码:
    <script>
    function fun(){var mydiv = document.getElementById('abc');
    mydiv.style.display = 'none';}
    </script>

    3,如果abc是服务器端控件,则需要

    客户端代码:
    <script>
    function fun(){var mydiv = document.getElementById('<%=abc.ClientID%>');
    mydiv.style.display = 'none';}
    </script>

    孟宪会
    • 已标记为答案 Hugo12345 2009年2月14日 15:02
    2009年2月14日 9:40
    版主
  •  谢谢!微软大本营真是好地方。省得我去CSDN论坛浪费时间!哈哈~~
    郭鹏
    2009年2月14日 15:03