1:vbscript與javascipt傳變量(客戶端)
<HTML>
<HEAD>
<METAname=VI60_defaultClientScriptcontent=Javascript>
<SCRIPTLANGUAGE=vbscript>
<!--
dimstrTemp'首先,我們在這里用vbscript定義一個變量
strTemp=10'緊接著,在這里給其負值。
-->
</SCRIPT>
<METANAME="GENERATOR"Content="MicrosoftVisualStudio6.0">
<SCRIPTID=clientEventHandlersJSLANGUAGE=javascript>
<!--
functiondocument_onclick(){
window.alert(strTemp);/**在這里,我們不經過定義就可以直接用剛才vbscript里的遍量了。**/
}
//-->
</SCRIPT>
<SCRIPTLANGUAGE=javascriptFOR=documentEVENT=onclick>
<!--
document_onclick()/**此時,你可以通過點擊網頁就可以看到vbscript中的變量已經傳過來了。**/
//-->
</SCRIPT>
</HEAD>
<BODY>
說明:其實,如果你在vbscript中定義的變量。如果不是在函數里或是過程中的,他就都是全局變量。這個全局也就是從此刻到網頁執行完畢。所以,在javascript中就可以拿來直接用了。但這里可要注意順序。腳本執行過程是逐行解釋執行的,如果你把vbscirpt中定義變量的部分放在javascript之后,可能就得不到正確結果了。道理就很清楚了。
2:javascript與vbscript傳變量(客戶端)
其實,這個就不用講了,也可以的。但還是給個簡單的例子吧。自己看看就明白了。
HTML>
<HEAD>
<METAname=VI60_defaultClientScriptcontent=JavaScript>
<scriptlanguage=javascript>
varstrTemp=10;
</script>
<scriptlanguage=vbscript>
msgbox(strTemp)
</script>
</HEAD>
<BODY>
3:服務器端與客戶端傳變量。
首先,我要說的是,服務器端與客戶端腳本是可以傳的。傳什么先不要管。但是,服務器端與客戶端傳變量與上面講的不太一樣?;蛘卟唤袀髯兞俊N覀冞€是結合例子吧。
<@Language=VBScript>
<
dimstrIp
strIp=Request.ServerVariables("remote_addr")
Response.Write"你的IP是:"&strIp
>
<html>
<body>
<SCRIPTLANGUAGE=vbscript>
<!--
msgbox(strIp)'請注意:這里是錯的!
-->
</SCRIPT>
</body>
執行完上面的句子,可能不會報錯。但答案是錯的。原因就是我說的,這里面是不可能吧變量傳過來的。如果我們把流程搞清楚就不會犯這樣的錯誤了。
首先,服務器端先解釋<>直接的代碼。如果有,就把他解釋執行完畢,得到值后直接傳化為html的形式扔給客戶端。至于客戶端腳本,服務器端會動也不動就扔過來。所以我們看上面的例子。客戶端的腳本不被服務器端解釋。而服務器端的腳本已經轉化為固定的值了,所以,
strIp里什么也沒有。故得不到你想要的答案。
那如何才能將ip址傳過來呢。這個就要稍微動一下腦子,其實不用動。呵呵。直接把msgbox(strIp)改成這樣。
msgbox("<=strIp>")就可以了。注意,要加上""號的,因為這時,strIp已經被解釋執行為字符串了。
看到這里,相信大家都明白了,服務器端與客戶端嚴格上,是不可能傳遞變量的。但可以變通的傳值。(叫不叫傳值,不用管他,反正已經得到正確答案了。呵呵)至于可不可以與客戶端的javascript傳值。我不說你也明白了。當然可以。
二:說在最后的話,腳本語言中vbscript與javascript功能上不分上下。說不上誰好誰差,可能vbscript中錯誤處理好一些。javascript中字符串處理好一些,但隨著vbscript中正則表達式的引入,javascript中錯誤處理不斷增強。所以,用那一種我認為都可以了。關鍵是看你的習慣與愛好,說這些的原因如果你用一種就可以完成,就最好不要用另一種。因為這樣從速度和效率來說都是最佳的。因為瀏覽器不用同時調用兩種解釋引擎。速度當然就快了。
新聞熱點
疑難解答