Javascript與vbscript數(shù)據(jù)共享
更新時(shí)間:2007年01月09日 00:00:00 作者:
如有紕漏之處,請(qǐng)指出,謝謝
1、普通全局變量
在browser里,引用一個(gè)全局變量,可以有很多方法,你可以直接引用該變量,也可以用window.variable來(lái)引用全局變量,原因是因?yàn)槿肿兞繉儆趙indow的窗體,但是當(dāng)每新開一個(gè)窗口,瀏覽器會(huì)自動(dòng)清空先前已有變量(也就是說(shuō),每個(gè)新開頁(yè)面都是一個(gè)“有清白之身的web頁(yè)”,因此在新開的窗口里是不可以引用之前定義的變量,如果要引用,可以變向獲取,如通過(guò)URL的參數(shù)傳遞等方法來(lái)獲取,但這是后話了)如:
<script>
var global = "this is a global var."
</script>
<SCRIPT LANGUAGE="vbScript">
<!--
alert(window.global)
alert(global)
//-->
</SCRIPT>
輸出結(jié)果:
this is a global var.
this is a global var.
2、vbs引用js的對(duì)象(非原型prototype對(duì)象)、函數(shù)
可直接引用:即對(duì)象名.屬性名
<SCRIPT LANGUAGE="JavaScript">
<!--
function obj(){};
obj.string="test";
obj.replacec=function(s){return s.replace(/c/,"")};
//-->
</SCRIPT>
<SCRIPT LANGUAGE="vbScript">
<!--
alert(obj.string)
obj.string="change"
alert(obj.string)
alert(obj.replacec(obj.string))
//-->
</SCRIPT>
輸出結(jié)果:
change
hange
當(dāng)js是prototype型時(shí),vbs可以用以下方法來(lái)訪問(wèn)js的成員
<SCRIPT LANGUAGE="JavaScript">
<!--
function myClass(s)
{
this.s=s
return this;
};
myClass.prototype.output=function()
{
alert(this.s);
}
var obj=new myClass("blueDestiny");
//-->
</SCRIPT>
<SCRIPT LANGUAGE="vbScript">
<!--
obj.output()
//-->
</SCRIPT>
3、js里調(diào)用vbs里的class,可先在vbs里先生成一個(gè)實(shí)例,js可以通過(guò)這個(gè)實(shí)例來(lái)訪問(wèn)vbs的成員。
<SCRIPT LANGUAGE="vbScript">
<!--
class myClass
public s
public sub alertstring()
alert(s)
end sub
end class
set obj=new myClass
//-->
</SCRIPT>
<SCRIPT LANGUAGE="JavaScript">
<!--
obj.s="blueDestiny"
obj.alertstring()
//-->
</SCRIPT>
輸出結(jié)果:
blueDestiny
4、js調(diào)用vbs定義的數(shù)組問(wèn)題,可直接得用下標(biāo)來(lái)獲得第幾個(gè)元素的值。
<SCRIPT LANGUAGE="vbScript">
dim a(2)
a(0)="blue"
a(1)="destiny"
</script>
<script>
<!--
alert(a(0))
alert(a(1))
//-->
</SCRIPT>
輸出結(jié)果:
blue
destiny
但是,如何將vbs的數(shù)組轉(zhuǎn)換成js的數(shù)組呢?可以利用js的VBArray()對(duì)象,以及toArray()方法,值得注意的是,toArray()方法得出的是一個(gè)一維數(shù)組:
<SCRIPT LANGUAGE="VBScript">
<!--
Function CreateVBArray()
Dim i, j, k
Dim a(2, 2)
'初始化二維數(shù)組
k = 1
For i = 0 To 2
For j = 0 To 2
a(j, i) = k
document.writeln(k)
k = k + 1
Next
document.writeln("<BR>")
Next
CreateVBArray = a
End Function
-->
</SCRIPT>
<SCRIPT LANGUAGE="JScript">
<!--
function VBArrayTest(vbarray)
{
//調(diào)用VBArray()對(duì)象,將vbs數(shù)組轉(zhuǎn)化為js的數(shù)組并調(diào)用toArray()方法得到一維數(shù)組。
var a = new VBArray(vbarray);
var b = a.toArray();
var i;
for (i = 0; i < 9; i++)
{
document.writeln(b[i]);
}
}
VBArrayTest(CreateVBArray());
-->
</SCRIPT>
輸出結(jié)果:
1 2 3
4 5 6
7 8 9
1 2 3 4 5 6 7 8 9
5、js數(shù)組轉(zhuǎn)化為vbs數(shù)組:
得到j(luò)s的數(shù)組長(zhǎng)度,可直接用length屬性獲得
<SCRIPT LANGUAGE="JavaScript">
<!--
var arr=["blue","Destiny"];
//-->
</SCRIPT>
<SCRIPT LANGUAGE="vbScript">
<!--
alert(arr.length)
//-->
</SCRIPT>
輸出結(jié)果:
2
如果要通過(guò)下標(biāo)訪問(wèn)js的數(shù)組元素,將無(wú)法獲取,但可通過(guò)現(xiàn)有的方法:join()(js里的方法)以及Split()
<SCRIPT LANGUAGE="vbScript">
<!--
'注:這里不可用vbs的join(arr,",")方法,實(shí)際上這里所用到的是js里的join方法,并且為vbs的
vbarr=arr.join(",")
vbarr=split(vbarr,",")
alert(vbarr(0))
alert(vbarr(1))
//-->
</SCRIPT>
輸出結(jié)果
blue
Destiny
1、普通全局變量
在browser里,引用一個(gè)全局變量,可以有很多方法,你可以直接引用該變量,也可以用window.variable來(lái)引用全局變量,原因是因?yàn)槿肿兞繉儆趙indow的窗體,但是當(dāng)每新開一個(gè)窗口,瀏覽器會(huì)自動(dòng)清空先前已有變量(也就是說(shuō),每個(gè)新開頁(yè)面都是一個(gè)“有清白之身的web頁(yè)”,因此在新開的窗口里是不可以引用之前定義的變量,如果要引用,可以變向獲取,如通過(guò)URL的參數(shù)傳遞等方法來(lái)獲取,但這是后話了)如:
<script>
var global = "this is a global var."
</script>
<SCRIPT LANGUAGE="vbScript">
<!--
alert(window.global)
alert(global)
//-->
</SCRIPT>
輸出結(jié)果:
this is a global var.
this is a global var.
2、vbs引用js的對(duì)象(非原型prototype對(duì)象)、函數(shù)
可直接引用:即對(duì)象名.屬性名
<SCRIPT LANGUAGE="JavaScript">
<!--
function obj(){};
obj.string="test";
obj.replacec=function(s){return s.replace(/c/,"")};
//-->
</SCRIPT>
<SCRIPT LANGUAGE="vbScript">
<!--
alert(obj.string)
obj.string="change"
alert(obj.string)
alert(obj.replacec(obj.string))
//-->
</SCRIPT>
輸出結(jié)果:
change
hange
當(dāng)js是prototype型時(shí),vbs可以用以下方法來(lái)訪問(wèn)js的成員
<SCRIPT LANGUAGE="JavaScript">
<!--
function myClass(s)
{
this.s=s
return this;
};
myClass.prototype.output=function()
{
alert(this.s);
}
var obj=new myClass("blueDestiny");
//-->
</SCRIPT>
<SCRIPT LANGUAGE="vbScript">
<!--
obj.output()
//-->
</SCRIPT>
3、js里調(diào)用vbs里的class,可先在vbs里先生成一個(gè)實(shí)例,js可以通過(guò)這個(gè)實(shí)例來(lái)訪問(wèn)vbs的成員。
<SCRIPT LANGUAGE="vbScript">
<!--
class myClass
public s
public sub alertstring()
alert(s)
end sub
end class
set obj=new myClass
//-->
</SCRIPT>
<SCRIPT LANGUAGE="JavaScript">
<!--
obj.s="blueDestiny"
obj.alertstring()
//-->
</SCRIPT>
輸出結(jié)果:
blueDestiny
4、js調(diào)用vbs定義的數(shù)組問(wèn)題,可直接得用下標(biāo)來(lái)獲得第幾個(gè)元素的值。
<SCRIPT LANGUAGE="vbScript">
dim a(2)
a(0)="blue"
a(1)="destiny"
</script>
<script>
<!--
alert(a(0))
alert(a(1))
//-->
</SCRIPT>
輸出結(jié)果:
blue
destiny
但是,如何將vbs的數(shù)組轉(zhuǎn)換成js的數(shù)組呢?可以利用js的VBArray()對(duì)象,以及toArray()方法,值得注意的是,toArray()方法得出的是一個(gè)一維數(shù)組:
<SCRIPT LANGUAGE="VBScript">
<!--
Function CreateVBArray()
Dim i, j, k
Dim a(2, 2)
'初始化二維數(shù)組
k = 1
For i = 0 To 2
For j = 0 To 2
a(j, i) = k
document.writeln(k)
k = k + 1
Next
document.writeln("<BR>")
Next
CreateVBArray = a
End Function
-->
</SCRIPT>
<SCRIPT LANGUAGE="JScript">
<!--
function VBArrayTest(vbarray)
{
//調(diào)用VBArray()對(duì)象,將vbs數(shù)組轉(zhuǎn)化為js的數(shù)組并調(diào)用toArray()方法得到一維數(shù)組。
var a = new VBArray(vbarray);
var b = a.toArray();
var i;
for (i = 0; i < 9; i++)
{
document.writeln(b[i]);
}
}
VBArrayTest(CreateVBArray());
-->
</SCRIPT>
輸出結(jié)果:
1 2 3
4 5 6
7 8 9
1 2 3 4 5 6 7 8 9
5、js數(shù)組轉(zhuǎn)化為vbs數(shù)組:
得到j(luò)s的數(shù)組長(zhǎng)度,可直接用length屬性獲得
<SCRIPT LANGUAGE="JavaScript">
<!--
var arr=["blue","Destiny"];
//-->
</SCRIPT>
<SCRIPT LANGUAGE="vbScript">
<!--
alert(arr.length)
//-->
</SCRIPT>
輸出結(jié)果:
2
如果要通過(guò)下標(biāo)訪問(wèn)js的數(shù)組元素,將無(wú)法獲取,但可通過(guò)現(xiàn)有的方法:join()(js里的方法)以及Split()
<SCRIPT LANGUAGE="vbScript">
<!--
'注:這里不可用vbs的join(arr,",")方法,實(shí)際上這里所用到的是js里的join方法,并且為vbs的
vbarr=arr.join(",")
vbarr=split(vbarr,",")
alert(vbarr(0))
alert(vbarr(1))
//-->
</SCRIPT>
輸出結(jié)果
blue
Destiny
您可能感興趣的文章:
- $.ajax json數(shù)據(jù)傳遞方法
- Javascript 表單之間的數(shù)據(jù)傳遞代碼
- Ajax中數(shù)據(jù)傳遞的另一種模式 javascript Object Notation思想(JSON)
- js創(chuàng)建數(shù)據(jù)共享接口——簡(jiǎn)化框架之間相互傳值
- JavaScript iframe數(shù)據(jù)共享接口實(shí)現(xiàn)方法
- Angularjs實(shí)現(xiàn)多個(gè)頁(yè)面共享數(shù)據(jù)的方式
- 深入淺析JavaScript中數(shù)據(jù)共享和數(shù)據(jù)傳遞
相關(guān)文章
js實(shí)現(xiàn)點(diǎn)小圖看大圖效果的思路及示例代碼
點(diǎn)小圖看大圖的效果想必很多的朋友都有見到過(guò)吧,下面有個(gè)不錯(cuò)的示例,感興趣的朋友可以參考下2013-10-10原生Js與jquery的多組處理, 僅展開一個(gè)區(qū)塊的折疊效果
同一個(gè)頁(yè)面, 有多組(不固定), 每組區(qū)塊數(shù)量不一定一樣的小區(qū)塊. 要求每次只展開一個(gè)區(qū)塊,需要的朋友可以參考下。2011-01-01JS定時(shí)器實(shí)現(xiàn)數(shù)值從0到10來(lái)回變化
最近做項(xiàng)目遇到一需求要求實(shí)現(xiàn)數(shù)值從0到10來(lái)回變化,下面小編給大家分享下實(shí)現(xiàn)代碼,需要的朋友參考下2016-12-12不用AJAX和IFRAME,說(shuō)說(shuō)真正意義上的ASP+JS無(wú)刷新技術(shù)
注明:以下方法都經(jīng)過(guò)實(shí)例和開發(fā)的長(zhǎng)期驗(yàn)證,其實(shí)這些技術(shù)早就有,今天只不過(guò)自己歸納一下2008-09-09Bootstrap布局組件應(yīng)用實(shí)例講解
這篇文章主要針對(duì)Bootstrap布局組件應(yīng)用進(jìn)行實(shí)例講解,感興趣的小伙伴們可以參考一下2016-02-02ES6 Iterator遍歷器原理,應(yīng)用場(chǎng)景及相關(guān)常用知識(shí)拓展詳解
這篇文章主要介紹了ES6 Iterator遍歷器原理,應(yīng)用場(chǎng)景及相關(guān)常用知識(shí)拓展,結(jié)合實(shí)例形式詳細(xì)分析了ES6 Iterator遍歷器具體原理、功能、用法、應(yīng)用場(chǎng)景及知識(shí)拓展,需要的朋友可以參考下2020-02-02