有个vbscript函数转成javascript,请javascript高手帮下忙,谢谢
sub chgbm
dim i,e,j,ba
for i= 0 to frmxx.dxry.options.length-1
frmxx.dxry.options.remove 0
next
for i=1 to ubound(ary,2)
if frmxx.bm.value=ary(2,i) or frmxx.bm.value="X" then
ba=0
for j=0 to frmxx.yxry.length-1
if ary(0,i)=frmxx.yxry.item(j).value then
ba=1
exit for
end if
next
if ba=0 then
Set e = Document.createElement("OPTION")
e.value=ary(0,i)
e.text=ary(1,i)
frmxx.dxry.options.add e
end if
end if
next
end sub

解决方案 »

  1.   

    楼主做什么用的啊?说需求,重新用js 写,都比改它容易!那个命名,很难猜测他是做什么的!
    感觉是操作 select option 的
      

  2.   

    是的,是选人,根据下拉框选人,完整代码:
    <%
    dim rs
    set rs=server.CreateObject("adodb.recordset")
    dim ary()
    redim ary(3,0)
    dim syxrylb,sbxrylb
    sbxrylb = Request("bxrylb")&"" '不需要在这里选择的人员列表
    syxrylb=Request.QueryString("yxrylb")
    syxrylb=trim(syxrylb)%>
    <table align="center" width="490" class="InputFrameMain" style="margin-left:7px"><tr><td><table width=470 border=0 align=center cellpadding=0 cellspacing=0 style="Margin:5px 5px 5px 5px">
    <form method=post name=frmxx id=frmxx>
    <tr class=InputFrameLine>
    <td width=60 class='inputlabelcell' nowrap>选择人员</td>
    <td class=inputareacell width=350><input type="radio" value="V1" name="R1" onclick="vbscript:usebm" Checked>按部门选择&nbsp;<input type="radio" value="V1" name="R1" onclick="vbscript:usezw" >按职位选择&nbsp;<input type="radio" value="V1" name="R1" onclick="vbscript:useug" >按工作组选择</td>
    </tr>
    <tr class=InputFrameLine>
    <td width=60 class='inputlabelcell' align=right nowrap>部门/职位</td>
    <td class=inputareacell>
    <select id=bm name=bm style="display:inline" onchange="" style="width:100%">
    <option value="X" selected>所有部门</option>
    <%
    ssql="select * from rs_bmb where ztbz='0' order by bmbh"
    rs.Open ssql,conn,1,1
    do while not rs.EOF
    %>
    <option value="<%=rs("bmbh")%>" <%if sdata=rs("bmbh") then Response.Write "selected"%>>
    <%=replace(string(len(rs("bmbh"))-2,"a"),"a","&nbsp;") & server.HTMLEncode(rs("bmmc") & "")%></option>
    <%
    rs.MoveNext
    loop
    rs.Close
    %>
    </select>
    <select id=zw name=zw style="display:none" onchange="vbscript:chgzw"  style="width:100%">
    <option value="X" selected>所有职位</option>
    <%
    ssql="select a.*,b.bmmc from oa_qx_zw a,rs_bmb b where a.bmbh=b.bmbh"
    rs.Open ssql,conn,1,1
    do while not rs.EOF
    %>
    <option value="<%=rs("zwbh")%>" <%if cstr(sdata)=cstr(rs("zwbh")) then Response.Write "selected"%>><%=server.HTMLEncode(rs("bmmc") & "/" & rs("zwmc") & "")%></option>
    <%
    rs.MoveNext
    loop
    rs.Close
    %>
    </select>
    <select id=ug name=ug style="display:none" onchange="vbscript:chgug"  style="width:100%">
    <option value="X" selected>所有工作组</option>
    <%
    ssql="select * from OA_UserGroup  where IsUse = 0 " 
    rs.Open ssql,conn,1,1
    do while not rs.EOF
    %>
    <option value="<%=rs("GroupID")%>" <%if cstr(sdata)=cstr(rs("GroupID")) then Response.Write "selected"%>>
    <%=server.HTMLEncode(rs("GroupName"))%>
    </option>
    <%
    rs.MoveNext
    loop
    rs.Close
    %>
    </select>
    </td>
    </tr>
     
    <tr class=InputFrameLine>
    <td colspan=2 class=inputareacell>
    <table width=100% class=tableframe>
    <tr align=center class=listtitle>
    <td class=listcelltitle>可选人员</td>
    <td class=listcelltitle> </td>
    <td class=listcelltitle>已选人员</td>
    </tr>

    <tr align=center>
    <td>
    <select id=dxry name=dxry style="display:inline" size=9 rows=9 style="width: 100%" ondblclick="addAttendee();">
    <%

    ssql="select ygbh,ygxm,ssbm,zw,GroupID from rs_ygb where ryzt='0' or ryzt='2' order by ygxm asc"
    rs.Open ssql,conn,1,1
    dim i
    redim ary(4,rs.RecordCount)
    for i=1 to rs.RecordCount
    ary(0,i)=rs("ygbh")
    ary(1,i)=rs("ygxm")
    ary(2,i)=rs("ssbm")
    ary(3,i)=rs("zw")
    ary(4,i)=rs("GroupID")
    if sbxrylb<> "" then
    if instr("," & sbxrylb & ",","," & rs("ygbh") & ",")=0 then
    %>
    <option value=<%=rs("ygbh")%>><%=server.HTMLEncode(rs("ygxm") & "")%></option>
    <%
    end if
    else
    if instr("," & syxrylb & ",","," & rs("ygbh") & ",")=0 then
    %>
    <option value=<%=rs("ygbh")%>><%=server.HTMLEncode(rs("ygxm") & "")%></option>
    <%
    end if
    end if
    rs.MoveNext
    next
    rs.Close
    %>
    </select>
    </td>
    <td valign=center width=40>
    <span valign=center>
    <input type=button class=button value="全选" id=bsall name=bsall onclick="vbscript:dosall">
    <br>
    <br>
    <input type=button class=button value="全清" id=bsnone name=bsnone onclick="vbscript:dosnone">
    </span>
    </td>
    <td class=row>
    <select id=yxry name=yxry style="display:inline" size=9 rows=9 style="width: 100%" ondblclick="removeAttendee();">
    <%
    if syxrylb<>"" then
    ssql="select ygbh,ygxm from rs_ygb where (ryzt='0' or ryzt='2') and ygbh in (" & syxrylb & ")"
    rs.Open ssql,conn,1,1
    for i=1 to rs.RecordCount
    %>
    <option value=<%=rs("ygbh")%>><%=server.HTMLEncode(rs("ygxm") & "")%></option>
    <%
    rs.MoveNext
    next
    rs.Close
    end if
    %>
    </select>
    </td>
    </tr>
    </table>
    </td>
    </tr>
    <input type="hidden" name="srcOrgID" value=""><!--for display org-->
    <input type="hidden" name="strselUserText" value="">
    <input type="hidden" name="selUserValue" value="">
    <tr class=InputFrameButtonLine>
    <td align="center" colspan=2>
    <input type=button class=button value=确定 name="bQD" id="bQD" onclick="vbscript:doSave">
    <input type=button class=button value=放弃 name="bFQ" id="bFQ" onclick='vbscript:window.close'>
    <td>
    </tr>
    </form>
    </table></td></tr></table>
    <%
    set rrs = nothing
    Conn.Close
    set conn = nothing
    %>
    </BODY>
    </html>
      

  3.   

    <script language=vbscript>
    <!--
    dim ary()
    redim ary(4,0)
    <%
    Response.Write "redim ary(4," & ubound(ary,2) & ")" & vbcrlf
    for i= 0 to ubound(ary,2)
    Response.Write "ary(0," & i & ")=""" & ary(0,i) & """" & vbcrlf
    Response.Write "ary(1," & i & ")=""" & ary(1,i) & """" & vbcrlf
    Response.Write "ary(2," & i & ")=""" & ary(2,i) & """" & vbcrlf
    Response.Write "ary(3," & i & ")=""" & ary(3,i) & """" & vbcrlf
    Response.Write "ary(4," & i & ")=""" & ary(4,i) & """" & vbcrlf
    next
    %>
    <%if stag="zw" then%>
    usezw
    frmxx.R1(1).checked=true
    <%elseIf stag = "ug" Then%>
    useug
    frmxx.R1(2).checked=true
    <%else%>
    usebm
    frmxx.R1(0).checked=true
    <%end if%> sub usebm
    frmxx.bm.style.display="inline"
    frmxx.zw.style.display="none"
    frmxx.ug.style.display="none"
    end sub
    sub usezw
    frmxx.zw.style.display="inline"
    frmxx.bm.style.display="none"
    frmxx.ug.style.display="none"
    end sub
    sub useug
    frmxx.ug.style.display="inline"
    frmxx.zw.style.display="none"
    frmxx.bm.style.display="none"
    end sub
    sub chgbm
    dim i,e,j,ba
    for i= 0 to frmxx.dxry.options.length-1
    frmxx.dxry.options.remove 0
    next
    for i=1 to ubound(ary,2)
    if frmxx.bm.value=ary(2,i) or frmxx.bm.value="X" then
    ba=0
    for j=0 to frmxx.yxry.length-1
    if ary(0,i)=frmxx.yxry.item(j).value then
    ba=1
    exit for
    end if
    next
    if ba=0 then
    Set e = Document.createElement("OPTION")
    e.value=ary(0,i)
    e.text=ary(1,i)
    frmxx.dxry.options.add e
    end if
    end if
    next
    end sub

    sub chgug
    dim i,e,j,ba
    for i= 0 to frmxx.dxry.options.length-1
    frmxx.dxry.options.remove 0
    next
    for i=1 to ubound(ary,2)
    if instr("," & ary(4,i) & ",", "," & frmxx.ug.value & ",")>0 or frmxx.ug.value="X" then
    ba=0
    for j=0 to frmxx.yxry.length-1
    if ary(0,i)=frmxx.yxry.item(j).value then
    ba=1
    exit for
    end if
    next
    if ba=0 then
    Set e = Document.createElement("OPTION")
    e.value=ary(0,i)
    e.text=ary(1,i)
    frmxx.dxry.options.add e
    end if
    end if
    next
    end sub sub chgzw
    dim i,e,j,ba
    for i= 0 to frmxx.dxry.options.length-1
    frmxx.dxry.options.remove 0
    next
    for i=1 to ubound(ary,2)
    if instr("," & ary(3,i) & ",", "," & frmxx.zw.value & ",")>0 or frmxx.zw.value="X" then
    ba=0
    for j=0 to frmxx.yxry.length-1
    if ary(0,i)=frmxx.yxry.item(j).value then
    ba=1
    exit for
    end if
    next
    if ba=0 then
    Set e = Document.createElement("OPTION")
    e.value=ary(0,i)
    e.text=ary(1,i)
    frmxx.dxry.options.add e
    end if
    end if
    next
    end sub sub dosall
    dim i,j,ba
    for i= 0 to frmxx.dxry.options.length-1
    ba=0
    for j=0 to frmxx.yxry.length-1
    if frmxx.dxry.item(i).value=frmxx.yxry.item(j).value then
    ba=1
    exit for
    end if
    next
    if ba=0 then
    Set e = Document.createElement("OPTION")
    e.value=frmxx.dxry.item(i).value
    e.text=frmxx.dxry.item(i).text
    frmxx.yxry.options.add e
    end if
    next
    for i= 0 to frmxx.dxry.options.length-1
    frmxx.dxry.options.remove 0
    next
    end sub
    sub dosnone
    dim i,j,ba
    for i= 0 to frmxx.yxry.options.length-1
    ba=0
    for j=0 to frmxx.dxry.length-1
    if frmxx.yxry.item(i).value=frmxx.dxry.item(j).value then
    ba=1
    exit for
    end if
    next
    if ba=0 then
    Set e = Document.createElement("OPTION")
    e.value=frmxx.yxry.item(i).value
    e.text=frmxx.yxry.item(i).text
    frmxx.dxry.options.add e
    end if
    next
    for i= 0 to frmxx.yxry.options.length-1
    frmxx.yxry.options.remove 0
    next
    end sub sub dodsone
    dim i,j,ba
    if frmxx.yxry.options.length=0 then exit sub
    ba=0
    for j=0 to frmxx.dxry.length-1
    if frmxx.yxry.item(frmxx.yxry.selectedIndex).value=frmxx.dxry.item(j).value then
    ba=1
    exit for
    end if
    next
    if ba=0 then
    Set e = Document.createElement("OPTION")
    e.value=frmxx.yxry.item(frmxx.yxry.selectedIndex).value
    e.text=frmxx.yxry.item(frmxx.yxry.selectedIndex).text
    frmxx.dxry.options.add e
    end if
    frmxx.yxry.options.remove frmxx.yxry.selectedIndex
    end sub sub dosone
    dim i,j,ba
    if frmxx.dxry.options.length=0 then exit sub
    ba=0
    for j=0 to frmxx.yxry.length-1
    if frmxx.dxry.item(frmxx.dxry.selectedIndex).value=frmxx.yxry.item(j).value then
    ba=1
    exit for
    end if
    next
    if ba=0 then
    Set e = Document.createElement("OPTION")
    e.value=frmxx.dxry.item(frmxx.dxry.selectedIndex).value
    e.text=frmxx.dxry.item(frmxx.dxry.selectedIndex).text
    frmxx.yxry.options.add e
    end if
    frmxx.dxry.options.remove frmxx.dxry.selectedIndex
    end sub sub doSave
    dim i
    dim s1,s2
    s1=""
    s2=""
    for i=0 to frmxx.yxry.length-1
    s1=s1 & "," & frmxx.yxry.item(i).value
    s2=s2 & " " & frmxx.yxry.item(i).text
    next
    if s1 = "" Then
    msgbox "未选择人员",vbExclamation,"提示"
    exit sub
    End If
    if s1<>"" then
    s1=mid(s1,2)
    s2=mid(s2,2)
    end if
    window.returnValue = s1 & "_" & s2
    window.close
    end sub
    //-->
    </script>
      

  4.   

      同意+++
      关键看你的需求,如果楼主一定要硬性转换,那看看这个行吗?具体我也不知道你那些是怎么定义的,到时候执行不了报错误,最好把你完整的HTML代码都发出来!完整的:
      
    <script type="text/javascript">
    var i,e,j,ba;
    for(var i=0;i<frmxx.dxry.options.length-1;i++)
    {
    frmxx.dxry.options.remove(0);
    }
    for(var i=0;i<ary[2].length;i++)
    {
       if (frmxx.bm.value==ary[2][i]||frmxx.bm.value=="X")
       {
       ba=0;
       for(var j=0;j<frmxx.yxry.length-1;j++)
          {
      if(arr[0][i]==frmxx.yxry.item(j).value)
       {
       ba=1;
       break;
       }
          }
       }
       if(ba==0)
       {
        var e=Document.createElement("OPTION");
    e.value = ary[0][i];
    e.text = ary[1][i];
    frmxx.dxry.options.add[e];
       }
    }
    </script>
      
      

  5.   

    参考下,另外楼主要搞清楚下客户端和服务端,asp里面的ary和你vbs脚本里面的ary不是等同的,需要下列代码中var ary = [<%= strOutput %>]这样,客户端脚本才能得到服务端查询出来的数据<script type="text/javascript">
    <!--
    <% dim strOutputssql="select ygbh,ygxm,ssbm from rs_ygb where ryzt='0' or ryzt='2' order by ygxm asc" 
    rs.Open ssql,conn,1,1
    dim iDo while(not rs.eof)
    strOutput = strOutput & ",[""" & rs("ygbh") & """,""" & rs("ygxm") & """,""" & rs("ssbm") & """]"
    rs.movenext
    Loop
    rs.closeif (strOutput<>"")Then
    strOutput = mid(strOutput,2)
    end if
     %>
    var ary = [<%= strOutput %>]
    function chgbm(){
    var i,e,j,ba,opts; opts = frmxx.dxry.options;
    opts.length = 0; for (i=0; i<ary.length; i++) {
    if(frmxx.bm.value==ary[i][2] || frmxx.bm.value=="X"){
    ba=0
    for(j=0; j<frmxx.yxry.length; j++){
    if(ary[i][0]==frmxx.yxry.item[j].value){
    ba=1;
    break;
    }
    }
    if(ba==0){
    opts[opts.length] = new Option(ary[i][0],ary[i][1]);
    }
    }
    }
    }
    //-->
    </script>
      

  6.   

    想问下,这样写是否可以<script language=javascript>
    var fmObj=document.frmxx;
    var ary = new Array();
        <%
    for i= 0 to ubound(ary,2)
     
    Response.Write "ary[0][" & i & "]=""" & ary(0,i) & """;" & vbcrlf
      Response.Write "ary[1][" & i & "]=""" & ary(1,i) & """;" & vbcrlf
      Response.Write "ary[2][" & i & "]=""" & ary(2,i) & """;" & vbcrlf
      Response.Write "ary[3][" & i & "]=""" & ary(3,i) & """;" & vbcrlf
      Response.Write "ary[4][" & i & "]=""" & ary(4,i) & """;" & vbcrlf
    next
    %>
    function chgbm1()
    {
        alert("fdsf");
            var i,e,j,ba;
            for(var i=0;i<frmxx.dxry.options.length-1;i++)
            {
            frmxx.dxry.options.remove(0);
            }
            for(var i=0;i<ary[2].length;i++)
            {
               if (frmxx.bm.value==ary[2][i]||frmxx.bm.value=="X")
               {
               ba=0;
               for(var j=0;j<frmxx.yxry.length-1;j++)
                  {
                  if(ary[0][i]==frmxx.yxry.item(j).value)
                   {
                   ba=1;
                   break;
                   }
                  }
               }
               if(ba==0)
               {
                var e=Document.createElement("OPTION");
                e.value = ary[0][i];
                e.text = ary[1][i];
                frmxx.dxry.options.add[e];
               }
            } }
      

  7.   

    谢谢,这方法是可以,var ary = [<%= strOutput %>],但这里好像取不到数据
      

  8.   

    想问下,if instr("," & ary(4,i) & ",", "," & frmxx.ug.value & ",")>0 or frmxx.ug.value="X" then 这个vbscript语句怎么转成javascript
      

  9.   


    if((","+ary(4,i)+",").indexOf(","+frmxx.ug.value+",")>0||frmxx.ug.value=="X"){
      //do something.............
    }