使用VBScript和JScript编写WEB应用程序(三)

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
使用 VBScriptJScript 编写 WEB应用 程序(三)

3、区分大小写以及命名习惯
JScript是严格区别大小写的:在每个 JScript的关键字,每个 JScript命名空间的所有部分中,
你可以把大写和小写字母恰当的结合起来使用。这其中包括了你使用的对象模型中所有的关键
字。例如,当你使用asp response对象时,必须正确地使用大小写字母(如response.write),
否则 JScript会坚决不予承认。同样,如果你为dhtml onclick事件 编写一个处理 程序,如果用
在visual basic中经常发生的随便使用大小写的形式 JScript可能就不会承认。

VBScript是不区分大写和小写字母的。在某种程度上,这种不计较大小写的疏忽甚至在你用
VBScriptJScript 编写的单元进行访问时都没什么问题。下面例子中给出了两个脚本。第一
个是用 JScript 编写的,其中还包括了一个全局变量(ctr)和一个函数(doubleme)。第二个
脚本是用 VBScript 编写的,它是一个按钮处理 程序,它能够调用 JScript函数,并且报告全局
变量的值。

<script language=javascript>
var ctr;
function doubleme(anumber){
    if(parseint(ctr)){
        ctr = ctr + 1;
    }
    else{
        ctr = 1;
    }
return anumber * 2;
}
</script>

<script language=" VBScript">
function btn1_onclick()
    numbertodouble = 12
    msgbox "the doubled number = " & doubleme(numbertodouble)
    msgbox "you have doubled the number " & ctr & " times."
end function
</script>

VBScript脚本中,很明显,我在提到doubleme 函数和ctr变量时,没有正确使用字母的大小
写,但是 程序依然运行良好。 这是一个好消息。而坏消息就是,在下面这些情况下你一定要注
意字母的大小写:如果网页中的javascript脚本所包含的单元只能够通过字母的大写和小写来
区分,例如,一个叫做timer()的函数和一个叫做timer的全局变量等等。很不幸,尽管这种编
码方式不怎么好,但是有时候在你的网页中还是可能会遇到原来就存在的编码。

在一个函数调用中把 JScript单元的名字作为一个字符串参数来使用

如果 JScript包括的单元仅仅能够用字母的大小写来区分,那么 VBScript就会把它们看成一样的
(也就是说,不区分大写和小写)。 VBScript只能看看不管大小写的区别,它们是不是一样,
因此它识别出的只有一个 JScript单元。换一句话说,如果 VBScript首先找到的是叫做timer()
的函数,那么它就无法找到叫做timer的全局变量了,反之也是一样。即便你在 VBScript编码中
十分注意的把它们做了区别结果也是一样。因为 VBScript在处理这些名字的时候认为它们只有一
种写法。不幸的是,这里没有其它的解决方法,除非在 JScript的代码中不利用这些大小写之间
的微小差别来区分不同的函数名称。

除了在某些特殊的情况下,把单元名作为参数使用这种问题并不常见。特殊情况之一是在visual
interdev 6.0中的脚本对象模型中。下面我会把它作为一个例子来使用,你可以把它看作是相同
情况下的处理准则。

visual interdev 6.0的脚本对象模型都是用 JScript编写的。你也可以用 VBScript编写自己
的编码,它能够与用 VBScript区分大小写方式 编写的脚本对象模型一起使用。有时候,你不能够
直接调用某一方法,除非你把这个方法的名称传递到一个 JScript函数中,而由函数来调用这个
方法。

一个典型的例子就是警告方法,你可以用它把一个方法绑定到一个特殊的事件上。在下面这个例
子中,一个按钮的onmouseover事件被绑定到changecaption()事件处理 程序上。

<script language=" VBScript">
function setadvisemethods()
    btn1.advise("onmouseover", "changecaption()")
end function
</script>

因为你把这些名字作为字符串传送到一个 JScript函数中,所以你必须使用正确的大小写表示。
JScript会自动用它的区分大小写的规则来检查这些名字,如果大小写不正确,就会找不到它们。

4、从 VBScriptJScript中传送数组
有时候一个 VBScript 程序会传送一个数组作为它的一个参数,或者作为它的返回值。你可以从 JScript
中调用这个 程序,不过必须把 VBScript数组转换成为一个可用的 JScript数组。你只要在 JScript函数中
建立一个vbarray对象并且用toarray把它转换成为一个 JScript数组就可以了。

注意: JScript不支持多维数组,如果原来的 VBScript数组是多维的,经过toarray的转换后它会成为一
个一维的 JScript数组。 在下面的例子中有一个 VBScript脚本,它建立了一个数组,还有一个 JScript
脚本,它将说明如何才能获得并使用这个数组:

<script language=" VBScript">
function makearrayvb()
    ' 建立一个 VBScript 数组
    dim anarray(1,1)
    anarray(0,0) = "0,0"
    anarray(0,1) = "0,1"
    anarray(1,0) = "1,0"
    anarray(1,1) = "1,1"
    makearrayvb = anarray
end function

<script language="javascript">
// 在 JScript 脚本中访问 VBScript 数组
function getvbarray(){
    var arrayobj;
    var jsarray;
    arrayobj = makearrayvb();
    jsarray = vbarray(arrayobj).toarray();
    alert(" VBScript array length = " + jsarray.length);
    
    // 显示数组的内容
    for(i=1;i<=jsarray.length;i++){
       alert(jsarray[i-1]);
    }
}
</script>
不过,在目前的 VBScript(4.0)中,反过来是无法做到的。也就是说你不能把一个 javascript 数组转换成
VBScript数组。如果你非要在 VBScript 程序中使用javascript数组,你可以用下面的做法:
JScript 数组转换成一种不同的结构,如转换成一个由分隔符限制的字符串等,这样 VBScript 就能够使
用了。例如,你可以用 tostring 函数把一个数组转换成一个用逗号分隔的,无限制的字符串。这样,在
VBScript 中你就能够用 split 函数把它分成不同的单元。很明显这种方法在很多时候并不管用,不过有时
又的确有效。

以上罗里罗唆的写了一大堆,希望能对网友们有帮助,也希望就某些问题展开讨论。
最后,祝网友们 happy scripting!!

我心飞扬敬上
< <script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值