可否在同一页面上一起使用JavaScript和VBScript脚本

xiaotian0420 2003-11-06 11:01:13
有可能做到吗?我试了很多都不行,有没有办法做到?
...全文
81 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
心云意水 2003-11-06
  • 打赏
  • 举报
回复
<script language=javascript>
var a="javascript"
</script>
<script language=vbscript>
msgbox a
</script>

一个叶面中使用两种语言,实现变量互用,如果vbs中也定义一个a变量,就……
笑对最好 2003-11-06
  • 打赏
  • 举报
回复
可以,赫赫,一般情况下不要这样!
yonghengdizhen 2003-11-06
  • 打赏
  • 举报
回复
尽量避免使用..

在特定的状况下会导致变量的冲突.这是我的最深感受.尤其是使用客户端使用全局脚本的状态下
slumcherry 2003-11-06
  • 打赏
  • 举报
回复
vbscript和javascript互相调用方法
vbscript和javascript互相调用方法
  ASP具备管理不同语言脚本程序的能力,能够自动调用合适的脚本引擎以解释脚本代码和执行内置函数。ASP开发环境提供了两种脚本引擎,即VBScript(缺省)和JScript。不过,开发者并没有被限制于只能使用这两种语言,只要能够提供合适的ActiveX脚本引擎就能使用任何脚本语言。
  脚本语言的选择往往基于许多不同原因:它可能是开发者最为熟悉的语言,可能是对给定工程来说能够提供最多特色支持的,也有可能是最具效率的。不同的环境和要求使得我们在选择脚本语言时注重不同的因素,同时也使得我们在某些时候面临选定的脚本语言不能直接提供其它语言固有的函数这一问题,或某个脚本已经写成但用的却是另外一种脚本语言。
  此时应该怎么办?是否需要用当前所用的脚本语言重写这些脚本?或者说,是否有可能在一种脚本语言中调用其它脚本语言的内置函数?本文要说明的就是在ASP应用中如何让VBScript脚本和JScript脚本交互以最大限度地获得两种脚本语言的特色支持。
  一、VBScript和JScript的内置函数
  在VBScript和JScript中,有大量的内置函数功能是相同或类似的。然而,在一种脚本语言中内置的函数并非总是在另外一种脚本语言中也有对应的函数。例如,VBScript提供了许多用于操作字符串和格式化数据的函数,这些函数在JScript中并不存在。这些函数包括StrReverse()、Filter()以及FormatCurrency()等。在另一方面,JScript所提供的用于管理数组、字符串编码等的函数在VBScript中也没有定义,如join()、reverse()、pow()、位操作、escape()和unescape()等。
  那么,如果在JScript程序中需要一个VBscript函数该怎么办呢?
  二、异种脚本的互相调用
  如果需要在JScript脚本中调用一个VBScript中内置的函数,则应该写一个VBScript用户定义函数(在这里调用VBScript内置函数),然后在JScript脚本中象调用公用JScript函数一样调用这个用户定义函数。
  例如,如果要调用的VBSCript内置函数是FormatCurrency(),则可以声明如下自定义函数:
  <SCRIPT LANGUAGE="VBSCRIPT" RUNAT="SERVER">
  Function Formatvalue(value)
    Formatvalue = FormatCurrency(value)
  End Function
  </SCRIPT>
  接下来在JScript代码中就可以象普通JScript函数一样调用Formatvalue()了。用类似的方法也可以实现VBScript代码调用JScript函数。
  应用同样的规则,我们可以在任何脚本内调用任何用户定义函数。不过,从JScript脚本内调用一个不带参数的VBScript过程(Sub)时应略加注意,此时在JScript中应该象调用一个不带参数的JScript函数一样调用它,如用foo()调用VBScript Sub foo过程。
  三、数据共享
  在某些情形下混合运用VBScript和JScript函数是非常有用的,但在不同语言脚本之间共享数据也可能很有用。实现这种共享的方法很简单:不管使用的是什么语言,只要是在页面级声明的变量就可以任意引用。
  对象的使用方法也相似,可以任意选用合适的语言读取、修改属性或调用对象的方法。当然给定对象的属性和方法是由创建该对象实例的语言所定义的。正如上例VBScript的过程调用,当从JScript中调用一个不带参数的VBScript对象的方法时,其调用方法也遵从JScript的调用规则,反之亦然。
  四、数组管理
  数组共享问题稍微复杂一点。虽然数组也象其它变量一样可以在不同语言脚本之间共享,但必须注意兼容方面的问题。
  VBScript数组在JScript下可以用VBScript的符号引用,即用myArray(2)引用数组元素而不是JScript的数组元素引用符号myArray[2]。此外,还可以使用一个特殊的JScript对象——VBArray对象将VBScript数组转换为JScript数组。下面的代码从VBScript数组myVBArray创建JScript数组myJSArray:
 var Temp = new VBArray(myVBArray)
 var myJSArray
 myJSArray = Temp.toArray()
  上述代码首先创建一个临时的VBArray对象,然后使用它的toArray()方法将自己转换为JScript数组。此后就可以象普通JScript数组一样使用myJSArray,如myJSArray[1]。但应当注意的是,toArray()方法将把一个多维的VBArray转换为一维的JScript数组。
  从VBScript中引用JScript数组更为复杂。虽然在VBScript中我们可以直接访问JScript数组相关的方法和属性,但没有直接访问JScript数组的单个元素的方法。也就是说,我们可以在VBScript脚本中读取JScript数组的长度属性,如下所示:
  x = myJSArray.length
  但无法直接读取该数组的单个元素,下面的VBScript代码是不正确的:
  x = myJSArray(3)
  解决该问题的一个可行的方法是执行一个转换过程,如下面的代码所示,此处假定VBScript是缺省的脚本语言:
<%
  Dim Temp
  Dim myVBArray
  Temp = myJSArray.join(", ")
  myVBArray = Split(Temp, ", ")
%>
  此处的JScript join()方法将数组myJSArray元素转换到一个以逗号为分割符的字符串,VBScript Split()函数将字符串转换为VBScript数组。注意这里我们是在VBScript环境下调用JScript的join方法。依照此例,我们可以通过自定义VBScript函数来模拟JScript的VBArray对象的toArray()方法以实现JScript数组到VBScript数组的转换。
007james 2003-11-06
  • 打赏
  • 举报
回复
可以同时使用,但是不提倡而已,速度会变慢
maomao818 2003-11-06
  • 打赏
  • 举报
回复
当然可以拉.我给你一个例子:<%@ Language=VBScript %>
<%Option Explicit%>
<html>
<head>
<title>List</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<%
dim conn
dim rs
dim sql
dim count
dim rs1
dim sql1


set conn = server.CreateObject ("adodb.connection")
conn.Open "test","sa",""


sql = "select * from district order by locationid asc"
set rs = conn.execute(sql)
%>
<script language = "JavaScript">
var onecount;
onecount=0;
subcat = new Array();
<%
count = 0
do while not rs.eof
%>
subcat[<%=count%>] = new Array("<%= trim(rs("districtname"))%>","<%= trim(rs("locationid"))%>","<%= trim(rs("districtid"))%>");
<%
count = count + 1
rs.movenext
loop
rs.close
set rs=nothing
%>
onecount=<%=count%>;

function changelocation(locationid)
{
document.myform.smalllocation.length = 0;

var locationid=locationid;
var i;
document.myform.smalllocation.options[0] = new Option('====所有地区====','');
for (i=0;i < onecount; i++)
{
if (subcat[i][1] == locationid)
{
document.myform.smalllocation.options[document.myform.smalllocation.length] = new Option(subcat[i][0], subcat[i][2]);
}
}

}
</script>
</head>
<body>
<form name="myform" method="post">
<select name="biglocation" onChange="changelocation(document.myform.biglocation.options[document.myform.biglocation.selectedIndex].value)">
<%

sql1 = "select * from location order by locationname asc"
set rs1 = conn.Execute (sql1)
do while not rs1.eof
%>
<option value="<%=trim(rs1("locationid"))%>"><%=trim(rs1("locationname"))%></option>
<%
rs1.movenext
loop
rs1.close
set rs1 = nothing
conn.Close
set conn = nothing
%>
</select>
<select name="smalllocation">
<option selected value="">==所有地区==</option>
</select>
</form>
<script LANGUAGE="javascript">
changelocation(document.myform.biglocation.options[document.myform.biglocation.selectedIndex].value);
</script>
</body>
</html>

这就是一个成功的例子.放心吧,不成功是因为你的代码有问题,好好检查以下
Kanderliu 2003-11-06
  • 打赏
  • 举报
回复
:)呵呵,不提倡这样子做.如果你能用一种语言实现,何必要用另外一种语言!原则上是可以使用的.
xiaotian0420 2003-11-06
  • 打赏
  • 举报
回复
不好意思,是我没说清楚,我指的JavaScript和VBScript都是在客户端的,不是服务端的asp或其他
gabble 2003-11-06
  • 打赏
  • 举报
回复
同意,我也有体会,可以用,但是不到万不得已不要用,我觉得大多数都可以用过一种脚本语言来实现!大不了自己写一个函数来代替另一个函数中的保留函数而已,呵呵
楼主加油!
gdjxlhc 2003-11-06
  • 打赏
  • 举报
回复
是可以的,楼上的都解释得很清楚啦。
建议不要一起用。

87,901

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧