日期:2014-05-16  浏览次数:20956 次

如何让ASP与JS的IF 正常结合运行呢?

<%
sql = "select * from dat"  
Set rs = Server.CreateObject("ADODB.RecordSet")
rs.Open sql,conn,1,1
rs.movefirst
i=0
Do While Not rs.Eof
%>
if (nzoom >= <%=rs("Min_zoom")%> && nzoom <= <%=rs("Max_zoom")%>)
{
<%
Response.Write "var marker" & i & " = new BMap.Marker(point[" & i & "],{icon:myIcon" & rs("dtype") & "});"& Ent
i = i +1
%>
}
<%
rs.MoveNext
Loop
%>

本意思是想只获取在范围内的数据并顺序写成JS语句,可是这串代码在执行中 不管是否在条件内都会对ASP中的变量i进行加1运算,请教如何处理这类问题?
顺便想知道下,可否直接将nzoom的值直接放入ASP中进行比较?
------解决方案--------------------
你能不能把JS代码的结算写出来,不要用插入ASP,这样我才知道用ASP写了你想要的结果。
------解决方案--------------------
一个是客户端的,一个服务器端的,服务器的运行完了发送内容到客户端再轮到js运行,所以i肯定每次都执行+1操作

将你的nzoom变量定义为服务器端的进行比较,而不是直接和客户端的比较,没办法弄
------解决方案--------------------
楼主改变思想,如果你非要放入asp里比较,必须传值过去。或者用下面的方法:
<%
dim str
sql = "select * from dat"  
Set rs = Server.CreateObject("ADODB.RecordSet")
rs.Open sql,conn,1,1
rs.movefirst
Do While Not rs.Eof
str=str&"
------解决方案--------------------
"&rs("Min_zoom")&":"&rs("Max_zoom")&":"&rs("dtype")
rs.MoveNext
Loop
%>
<script type="text/javascript">
var nzoom=123;//你自己的变量
var str="<%=mid(str,2)%>";
var arr=str.split("
------解决方案--------------------
");
var a,n=0;
for(var i=0;i<arr.length;i++){
    a=arr[i].split(":");
    if(nzoom>=a[0]&&nzoom<=a[1]){
        window["marker"+n]=new BMap.Marker(point[n],{icon:"myIcon"+a[2]});
        n++;
    }
}
</script>