好的,我在c#中创建了一个数组,想要在javascript for循环中访问这些值。这是我的全局c#变量:
protected int count;
protected string[] arr = new string[20];
从那里我将字符串值添加到数组中,比如说,Page_Load()事件。
这是我理想的javascript代码:
var count = <%= count %>;
for (var i = 0; i < count; i++)
{
document.write(<%= arr[i] %>);
}
现在,如果我只是使用arr [0],它会弹出arr [0]的正确信息,所以我知道我的那部分是正确的,但有没有办法使用那个javascript变量“我“在&lt;%=%&gt;内标记
答案 0 :(得分:5)
代码的ASP.NET部分在服务器上执行。 JavaScript在浏览器中执行。服务器只是将JavaScript视为文本,它没有意义且无法使用。只有当浏览器收到页面并解释JS时才会执行。
请记住,服务器和客户端PC是由网络连接的两个不同系统。如果要在系统B上处理来自系统A的数据,则需要将数据发送到B. / p>
如果您想将数组中的数据发送到浏览器以便在某些JavaScript中使用它,则需要serialize数组。
这样的事情:
var myArray = <% = new JavaScriptSerializer().Serialize(serverSideArray) %>;
for(var i = 0; i < myArray.length; i++) {
document.write(myArray[i]);
}
答案 1 :(得分:3)
希望它对你有用...... 它在我的测试中运行良好
<script language ="javascript">
var count = <%= count %>;
alert(count);
<%
for(int i=0;i<count;i++){
%>
document.write(<%= arr[i] %>);
<%}%>
</script>
答案 2 :(得分:0)
你可以扩展服务器块的范围,只需在C#中循环arr
答案 3 :(得分:0)
我会为此受到抨击,但这里有:
服务器端:
protected void Page_Load(object sender, EventArgs e)
{
string[] arr = new string[] { "1", "2", "3" };
StringArr = string.Join(",", arr.Select(a => string.Format("\"{0}\"", a)).ToArray());
}
protected string StringArr;
客户端:
<script language="javascript" type="text/javascript">
var arr = [<%=StringArr %>];
alert(arr.length);
</script>
让嘲笑开始吧。