Javascript與vbscript資料共用

來源:互聯網
上載者:User

如有紕漏之處,請指出,謝謝

1、普通全域變數
在browser裡,引用一個全域變數,可以有很多方法,你可以直接引用該變數,也可以用window.variable來引用全域變數,原因是因為全域變數屬於window的表單,但是當每新開一個視窗,瀏覽器會自動清空先前已有變數(也就是說,每個新開頁面都是一個“有清白之身的web頁”,因此在新開的視窗裡是不可以引用之前定義的變數,如果要引用,可以變向擷取,如通過URL的參數傳遞等方法來擷取,但這是後話了)如:
<script>
var global = "this is a global var."
</script>
<SCRIPT LANGUAGE="vbScript">
<!--
alert(window.global)
alert(global)
//-->
</SCRIPT>

輸出結果:
this is a global var.
this is a global var.

2、vbs引用js的對象(非原型prototype對象)、函數
可直接引用:即對象名.屬性名稱

<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>

輸出結果:
change
hange

當js是prototype型時,vbs可以用以下方法來訪問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裡調用vbs裡的class,可先在vbs裡先產生一個執行個體,js可以通過這個執行個體來訪問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>
輸出結果:
blueDestiny

4、js調用vbs定義的數組問題,可直接得用下標來獲得第幾個元素的值。

<SCRIPT LANGUAGE="vbScript">
dim a(2)
a(0)="blue"
a(1)="destiny"
</script>

<script>
<!--
alert(a(0))
alert(a(1))
//-->
</SCRIPT>
輸出結果:
blue
destiny

但是,如何將vbs的數群組轉換成js的數組呢?可以利用js的VBArray()對象,以及toArray()方法,值得注意的是,toArray()方法得出的是一個一維數組:

<SCRIPT LANGUAGE="VBScript">
<!--
Function CreateVBArray()
Dim i, j, k
Dim a(2, 2)
'初始化二維數組
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)
{
//調用VBArray()對象,將vbs數組轉化為js的數組並調用toArray()方法得到一維數組。
var a = new VBArray(vbarray);
var b = a.toArray();
var i;
for (i = 0; i < 9; i++)
{
document.writeln(b[i]);
}

}
VBArrayTest(CreateVBArray());
-->
</SCRIPT>
輸出結果:
1 2 3
4 5 6
7 8 9
1 2 3 4 5 6 7 8 9

5、js數組轉化為vbs數組:
得到js的數組長度,可直接用length屬性獲得

<SCRIPT LANGUAGE="JavaScript">
<!--
var arr=["blue","Destiny"];
//-->
</SCRIPT>
<SCRIPT LANGUAGE="vbScript">
<!--
alert(arr.length)
//-->
</SCRIPT>

輸出結果:
2

如果要通過下標訪問js的數組元素,將無法擷取,但可通過現有的方法:join()(js裡的方法)以及Split()

<SCRIPT LANGUAGE="vbScript">
<!--
'註:這裡不可用vbs的join(arr,",")方法,實際上這裡所用到的是js裡的join方法,並且為vbs的
vbarr=arr.join(",")
vbarr=split(vbarr,",")
alert(vbarr(0))
alert(vbarr(1))
//-->
</SCRIPT>

輸出結果
blue
Destiny

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.