前台:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript" src="Scripts/jquery-1.4.1.js"></script>
    <script type="text/javascript">
        $(function () {
            function func() {
                alert("yes");
            }
        });
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
     
    </div>
    </form>
</body>
</html>
后台就写了一句:
 protected void Button1_Click(object sender, EventArgs e)
    {
        Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>func()</script>");
    }不明白怎么会出现这种情况,大家帮忙看看吧!多谢了!

解决方案 »

  1.   

    Page.RegisterStartupScript("func", "<script>func()</script>");
      

  2.   

    $(function () {把这个删除了,报错倒还真没发现!!
      

  3.   

    <script type="text/javascript">
            function func() {
                alert("yes");
            }
        </script>
      

  4.   

    ClientScript.RegisterStartupScript(this.GetType(), "","<script>func();</script>", true)
      

  5.   


    按你说的做确实不会报错,但我不明白为什么这样做就不会报错,我把func这个js函数放在jquery的$(document).ready中为什么会报错,为什么找不到func这个js函数?
      

  6.   

    你在后台的Page_Load方法里写出过函数的具体代码么?比如这样protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            void LoadData()
            {
                Response.Write("Test");
            }  
        }
    }
    反正我是不会这样的,一样的道理。
      

  7.   


    你说的意思我知道,我不明白的是为什么RegisterStartupScript这个方法找不到func这个函数?如果不把它放在$(document.ready)中就能找到,我不明白为什么会这样?能说详细点吗?谢谢!
      

  8.   

    你确定你明白?你写下试试,完全就是错误的。函数就没这种写法吧。
    $(document).ready也是一个函数。函数套函数??
      

  9.   

    <script type="text/javascript">
            $(function() {
                function func() {
                    alert("yes");
                }
                $("#Button1").click(function() {
                    func();
                });
            });
        </script>
      

  10.   

    嗯 sorry,跟C#不太一样。js是有这种内部函数写法的,这样写函数的作用范围就是$(document).ready内部,是$(document).ready的内部函数,鼠标点击事件不在$(document).ready内,访问不到的。
      

  11.   

    Quote: 引用 10 楼 lyicun 的回复:

    引用 9 楼 hangar_hyq 的回复:
    鼠标点击事件不在$(document).ready内,访问不到的quote]
    说的是楼主这样写法是访问不到的:
    protected void Button1_Click(object sender, EventArgs e)     {         Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>func()</script>");     }
      

  12.   

    那这样改下 $(document).ready(function () {
      

  13.   

    你的func这个函数是写在另一个函数中的,作用域不同。所以你找不到。你要写在外面就能找的到,如下
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <script type="text/javascript" src="Scripts/jquery-1.4.1.js"></script>
        <script type="text/javascript">            function func() {
                    alert("yes");
                }    </script>
      

  14.   

    页面加载顺序的问题,建议看一下 $(document).ready() 和 document.onload 的区别!
      

  15.   

    $(function () {
        function func() {
            alert("yes");
        }
    });楼主可能初学jQuery吧,
    初学这个的人,都很喜欢用$(function(){ xxxxx  });
    这个东东一来相当于onload,二来它是个闭包,里面定义的东东外面访问不到。而你在后台写的调用func(),当然也是不行。有空再多看看javascript的基础书籍吧,不要觉得jQuery就是一切。