代码之家  ›  专栏  ›  技术社区  ›  Ahmy

获取代码隐藏值时发生Javascript错误

  •  -1
  • Ahmy  · 技术社区  · 15 年前

    ArList = new Array('<%=ListOfWords[0]%>','<%=ListOfWords[1]%>','<%=ListOfWords[2]%>','<%=ListOfWords[2]%>');
    

    问题是,当我从数组中调用元素时,如下所示:

    document.getElementById("WordDiv").innerHTML = ArList [0];
    

    元素没有设置值,尽管代码隐藏中的数组有值,但我不知道为什么数组元素的值没有设置?在某些情况下,我发现它加载了值,并且一切正常,所以它可能是渲染中的一个问题,所以在客户端看不到代码背后的值?或者问题出在哪里? 当我在IE中跟踪应用程序时,我发现状态栏报告一个javascript错误,然后消失并说“完成”。当黄色allert出现在状态栏中时,我单击了它,并注意到消息说:预期对象。

    现在的问题是,在body标记的onload事件中,我在javascript中调用了一个函数,该函数使用codebhind数组中的值初始化javascript数组。问题是,在某些情况下,在我跟踪函数时,没有输入该函数,因为我在函数的开头添加了一个警报,我发现当javascript数组不可用时填充由于未显示警报,因此未输入函数的代码,因此我不知道如何强制DOM输入此函数,我在此处的标记中称其为代码示例: javascript代码:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
         <html xmlns="http://www.w3.org/1999/xhtml">
         <head runat="server">         
         </head>
         <body onload="IntializeArr(); return false;">
         <form id="form1" runat="server" >
         ..........Some Controls...............
        </form>
        <script type="text/javascript" language="javascript"> 
        var TList;
        var BList;
           function IntializeArr()
         {       
            TList = new Array('<%=ListofT[0]%>','<%=ListofT[1]%>','<%=ListofT[2]%>','<%=ListofT[3]%>','<%=ListofT[4]%>','<%=ListofT[5]%>','<%=ListofT[6]%>','<%=ListofT[7]%>','<%=ListofT[8]%>','<%=ListofT[9]%>');
            BList = new Array('<%=ListOfB[0]%>','<%=ListOfB[1]%>','<%=ListOfB[2]%>','<%=ListOfB[3]%>','<%=ListOfB[4]%>','<%=ListOfB[5]%>','<%=ListOfB[6]%>','<%=ListOfB[7]%>','<%=ListOfB[8]%>','<%=ListOfB[9]%>');        
         }
        </script>
        </body>
        </html>
    

    C#代码:

    public string[] ListOfB = new string[15];
    public string[] ListofT = new string[15];
    

    数组后面的代码是由数据库返回的数据填充的,它们被填充了,我跟踪了它们,每次都被填充了,我发现javascript的问题,我不知道是来自facebook平台还是来自我的代码,但我认为这不是源于我的代码,因为我在加载标签和功能未输入,这是问题所在,任何人可以帮助我吗

    希望我能在沮丧的时候找到解决办法

    3 回复  |  直到 15 年前
        1
  •  1
  •   Darin Dimitrov    15 年前

    您需要正确地转义这些值:

    TList = new Array("<%=Server.HTMLEncode(ListofT[0]%>)", ...);
    
        2
  •  0
  •   edeverett    15 年前

    NET在呈现aspx标记时是否存在问题 <script>

        3
  •  0
  •   Peter    15 年前

    这可以确保您拥有正确的数组,并且可以在javascript代码中使用更少的aspx标记。

    public string ArrayToJsArray(string[] array)
    {
        StringBuilder s = new StringBuilder();
        foreach (var item in array)
        {
            s.Append("'" + Server.HTMLEncode(item) + "',");
        }
        s.Remove(s.Length-1, 1);
    }
    
    public void main(){
        string script = "<script type=\"text/javascript\">";
        script += "var TList = new Array(" + ArrayToJsArray(TListArray) + ");";
        script += "var BList = new Array(" + ArrayToJsArray(BListArray) + ");";
        script += "</script>";
        Page.RegisterClientScriptBlock("key", script);
    }