javascript asp教程第四课 同时使用vbscript和javascript

时间:2021-10-23 00:52:46

开始:

你能让javascript和vbscript实现从同一个表格里传出音乐。看看下面的脚本:

  1. <%@LANGUAGE="JavaScript"%>  
  2.  
  3. <SCRIPT LANGUAGE="JavaScript" RUNAT="Server">  
  4. function JSGreeting()  
  5.     {  
  6.     return "Greetings from a JavaScript Function";  
  7.     }  
  8. </SCRIPT>  
  9.  
  10. <SCRIPT LANGUAGE="VBScript" RUNAT="Server">  
  11. Function VBGreeting()  
  12.     VBGreeting="Greetings from a VBScript Function"  
  13. End Function  
  14.  
  15. Function toDollars(x)  
  16.     toDollars=FormatCurrency(x)  
  17. End Function  
  18. </SCRIPT>  
  19.  
  20. <%  
  21. var a = 2;  
  22. var b = 2;  
  23. var c = add(a,b)  
  24. c += " (Two numbers are added by JavaScript, "  
  25. c += "and then formatted into currency by VBScript.)"  
  26.  
  27. function add(x,y)  
  28.     {  
  29.     result = x + y;  
  30.     result = toDollars(result);  
  31.     return result;      
  32.     }  
  33.  
  34. Response.Write("<HTML> ")  
  35. Response.Write(JSGreeting() + " 
  36. ")  
  37. Response.Write(VBGreeting() + " 
  38. ")  
  39. Response.Write(c + "  
  40. ")  
  41. Response.Write("</HTML> ")  
  42. %>  

RUNAT:

让我们将它从头到尾的分解开来。下面所列是一个简单而独立的javascript:

要不是那个不起眼的RUNAT="Server",它看起来就是一个你可能在客户端看到的简单的javascript。

RUNAT属性告诉服务器在服务器端执行它,因此客户端永远都看不到它的。你也可以将属性设置为RUNAT="client",这样就可以跳过服务器端,直接在客户端执行了。

顺便说一句,不能放置在asp标签内。

看看下面的vbscript:

FunctionVBGreeting()

VBGreeting="GreetingsfromaVBScriptFunction"

EndFunction

这个vbscript实现了和javascript同样的功能。它并没有什么特别之处。

然而,下面的vbscript还是有一些特别之处的。

FunctiontoDollars(x)

toDollars=FormatCurrency(x)

EndFunction

引用:

上面的函数回从javascript中获得一个参数。然后他会给javascript返回一个最合适的值。让我们来看看FunctiontoDollars(x)是如何被引用的。

functionadd(x,y)

{

result=x+y;

result=toDollars(result);

returnresult;

}

函数add(x,y)是一个javascript函数。从函数的中间可以看到

result=toDollars(result);

上面的一行实际上是vbscript对javascript的一个调用。

警告:

作为一个警告。当你创建带有RUNAT属性的脚本的时候,你实际上在安排它的执行顺序。我并不会深入的去讲解这个问题,因为执行的顺序是根据形势而定的。

下面是我将要深入讲解的:只对函数使用RUNAT属性(还有那些在函数内调用的全局变量)。不要将最顶层的代码放在它里面,因为你不能保证顶层代码会因为使用这个技巧而改变执行顺序。