我在facebook平台发布了一个网站,我正在使用C#.Net 2008,问题是我在javascript arary中加载了代码背后的数组元素,我使用以下javascript代码加载elelment元素:< / p>
ArList = new Array('<%=ListOfWords[0]%>','<%=ListOfWords[1]%>','<%=ListOfWords[2]%>','<%=ListOfWords[2]%>');
当我从数组中调用元素时,问题如下:
document.getElementById("WordDiv").innerHTML = ArList [0];
虽然后面的代码中的数组有值,但我不知道为什么没有设置数组元素的值,所以元素没有设置值?在某些情况下,我发现它加载了价值,一切正常,所以可能是渲染中的问题所以在客户端看不到代码的价值?或者问题出在哪里? 当我在IE中跟踪应用程序时,我发现状态栏报告了一个javascript错误,然后消失并说完了,当状态栏中出现黄色等待时我点击了它并注意到消息显示:对象预期。
现在的问题是在body标签的onload事件中我调用javascript中的一个函数,该函数使用来自数组后面的代码的值来初始化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平台还是从我的代码,但我认为它不是从我的代码作为问题,我在标签的onload中调用函数,并且没有输入函数,这是问题所以任何人都可以帮助我
希望我能找到解决方案,因为我感到沮丧
答案 0 :(得分:1)
您需要正确地转义值:
TList = new Array("<%=Server.HTMLEncode(ListofT[0]%>)", ...);
答案 1 :(得分:0)
在后面的代码中生成这个javascript代码然后调用Page.RegisterStartupScript()会不会更容易? 这可以确保您拥有正确的数组,并且可以在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);
}
尝试上面的代码,请原谅我,因为我自己没有运行它,所以它可能包含错误,但我认为这个想法很清楚。
答案 2 :(得分:0)
.NET是否在<script>
块内呈现aspx标记时出现问题?
HTML中是否呈现了正确的值?如果没有,你应该尝试以另一种方式渲染整个JS脚本块。