我在C#中有个数组a[0]到a[7],值是
a[0]=0
a[1]=1
a[2]=2
a[3]=3
a[4]=4
a[5]=5
a[6]=6
a[7]=7
我想在前台页面的JS中通过for语句的值来获取这个数组,好像不能用,前台代码如下,不能用
function re_pic(va_max)//这里JS要根据参数不同取C#中不同数组内容
{
max="<%=a[va_max]%>";//这样取不行
max="<%=a["+va_max+"]%>";//这样取也不行
max="<\%=a["+va_max+"]\%>";//这样取好像也不行
}
谁以帮我实现这功能不要告诉我这样实现,我会骂人的哦
{
switch(va_max)
{
case 0:max="<%=a[0]%>";break;
case 1:max="<%=a[1]%>";break;
case 2:max="<%=a[2]%>";break;
case 3:max="<%=a[3]%>";break;
case 4:max="<%=a[4]%>";break;
case 5:max="<%=a[5]%>";break;
case 6:max="<%=a[6]%>";break;
case 7:max="<%=a[7]%>";break;
}
}
a[0]=0
a[1]=1
a[2]=2
a[3]=3
a[4]=4
a[5]=5
a[6]=6
a[7]=7
我想在前台页面的JS中通过for语句的值来获取这个数组,好像不能用,前台代码如下,不能用
function re_pic(va_max)//这里JS要根据参数不同取C#中不同数组内容
{
max="<%=a[va_max]%>";//这样取不行
max="<%=a["+va_max+"]%>";//这样取也不行
max="<\%=a["+va_max+"]\%>";//这样取好像也不行
}
谁以帮我实现这功能不要告诉我这样实现,我会骂人的哦
{
switch(va_max)
{
case 0:max="<%=a[0]%>";break;
case 1:max="<%=a[1]%>";break;
case 2:max="<%=a[2]%>";break;
case 3:max="<%=a[3]%>";break;
case 4:max="<%=a[4]%>";break;
case 5:max="<%=a[5]%>";break;
case 6:max="<%=a[6]%>";break;
case 7:max="<%=a[7]%>";break;
}
}
protected void Page_Load(object sender, EventArgs e)
{
for (int i = 0; i < 8; i++)
{
a[i] = i.ToString();
}
} <script>
function aa(va_max){
var max;
switch(va_max)
{
case 0:max="<%=a[0]%>";break;
case 1:max="<%=a[1]%>";break;
case 2:max="<%=a[2]%>";break;
case 3:max="<%=a[3]%>";break;
case 4:max="<%=a[4]%>";break;
case 5:max="<%=a[5]%>";break;
case 6:max="<%=a[6]%>";break;
case 7:max="<%=a[7]%>";break;
}
return max;
}
alert(aa(1));
</script>
2楼说的我也知道
这三种方法的正确形式是什么
max=" <%=a[va_max]%>";//这样取不行
max=" <%=a["+va_max+"]%>";//这样取也不行
max=" <\%=a["+va_max+"]\%>";//这样取好像也不行
aspx:alert("<%=a[va_max] %>");这样就可以执行,因为<%= %>是在服务器端执行的,va_max是客户端变量的话,根本没有办法沟通的。
即使你使用拼凑的方法max=" <%=a["+va_max+"]%>"; 但是要知道这段代码是在<%= %>里面 va_max必须是cs里的变量才可以。
function re_pic(va_max)//这里JS要根据参数不同取C#中不同数组内容
{
max=" <%=a[va_max]%>";//这样取不行
max=" <%=a["+va_max+"]%>";//这样取也不行
max=" <\%=a["+va_max+"]\%>";//这样取好像也不行
} 你的va_max变量是JS变量 对C#后台代码无用。你只能在一开始就把C#数组中的值想类似的办法赋值给JS数组。
C# code
protected string a = "1,2,3,4,5,6";JS code
比如:var a = {<%=a%>};(代码如果有错误。请自己修改下哈。嘿嘿)这样JS就有个数组a了
然后在用JS循环就OK。
而你的JS在客户端的。也就是说va_max这个变量是客户端的变量。在服务器是不存在的。所以你写<%=a[va_max]%>动行是会出错的。因为不存在va_max这个变量。后面那两个写法也同样是错误的。
如果你想要把va_max这个客户端变量传到服务器去,要么你就提交页面,要么你就用AJAX。还有楼主所说的:
{
switch(va_max)
{
case 0:max=" <%=a[0]%>";break;
case 1:max=" <%=a[1]%>";break;
case 2:max=" <%=a[2]%>";break;
case 3:max=" <%=a[3]%>";break;
case 4:max=" <%=a[4]%>";break;
case 5:max=" <%=a[5]%>";break;
case 6:max=" <%=a[6]%>";break;
case 7:max=" <%=a[7]%>";break;
}
}
这个不知你是说哪里不行?是泄露代码了还是那个数组是动态的(不一定是8个),如果你是怕泄露代码,那你就只能用AJAX来实现。如果你的数组有可能不是8个,这我倒是有个方法,那就是在服务器端把 js中的re_pic()这个函数用Response.Write()输出。
才能这样用