第四集 如何使用运算函数
这是一个特殊的内建函数eval包括了运算式子为其参数,运算元,并回传一个值. 这函数对于运算一个表示的数值字串而言非常有用,举例来看,从FORM所输入的值总是字串,但你也许想要拿来运算,那我该怎么办??
下面的这一个例子包函了输入的文字栏位,应用的运算函数和显示结果的另一区块.假如你打了一个数值运算式在第一个栏位,并且按下了按钮,运算式便会开使运算,
<SCRIPT>
function compute(obj) {
obj.result.value = eval(obj.expr.value)
}
</SCRIPT>
<FORM NAME="evalform">
Enter an expression:
<INPUT TYPE=text NAME="expr" SIZE=20 >
<BR>
Result: <INPUT TYPE=text NAME="result" SIZE=20 >
<BR>
<INPUT TYPE="button" VALUE="Click Me"
onClick="compute(this.form)">
</FORM>
以下是原始语法
<HTML>
<HEAD>
<TITLE>浏览器的状态栏</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<SCRIPT language="JavaScript">
<!-- Hide
function statbar(txt) {
window.status = txt;
}
// -->
</SCRIPT>
<CENTER></CENTER>
<CENTER><B><FONT COLOR="#0000FF"></FONT></B></CENTER>
<P><FORM>
<P><FONT COLOR="#000000"> <INPUT type="button"
name="look" value="显示!"
onclick="statbar('嗨 这是状态列讯息!');"> <INPUT
type="button" name="erase" value="清除!"
onclick="statbar('');"></FONT>
<BR></FORM>
<CENTER><FONT COLOR="#000000"> </FONT></CENTER>
</BODY>
</HTML>
在这个例子中我们建了二个按钮,此二个按个均会去呼叫 statbar(txt) 。函数中的 txt 表 示此函数将经由函数呼叫时传一个变数值进来 (我们叫 txt但它可代表任意不同的值)你可以见到在产生按钮的 <form> 标 签中,呼叫到函数statbar(txt)在此我们就不再写成 txt 。
直接把要显示在状态列上的文字写上去,于是我们可以见到这样的效果,变数 txt 经由 'Value' 中得它的值,然后传入所呼叫的函数中。所以当你按"显示"的按钮时,statbar(txt) 函数被呼叫,然后 txt 将读入字串"嗨 这是状态列讯息" 并且传入函数中,这种经由变数传递值的方式,可以使函数相当具有可变性。
接着来看第二个按钮"清除" 它也呼叫同样的函数,我们并不需要因为传递参数的不同而言两个不同的函数。所以现在我们可以来看看statbar(txt) 这个函数做些什么了,其实它相当简单。你只要将 txt 所要传的文字内容指定给 window.status 这个变数就可以了。即是 window.status =txt,而在清除状态列的时候,只是将空字串写入即可。不过要注意的是必须使用单引号及双引号来区别,这样才容易区分。
以下是我们所制作的跑马灯效果的源程序
<html>
<head>
<script language="JavaScript">
<!-- Hide
var scrtxt="这儿的讯息可以改为你要告诉别人的话 "+"
或是注意事项 ...";
var lentxt=scrtxt.length;
var width=100;
var pos=1-width;
function scroll() {
pos++;
var scroller="";
if (pos==lentxt) {
pos=1-width;
}
if (pos<0) {
for (var i=1; i<=Math.abs(pos); i++) {
scroller=scroller+" ";}
scroller=scroller+scrtxt.substring(0,width-i+1);
}
else {
scroller=scroller+scrtxt.substring(pos,width+pos);
}
window.status = scroller;
setTimeout("scroll()",150);
}
//-->
</script>
<body onLoad="scroll();return true;">
Here goes your cool page!
</body>
</html>
此一程式中我们使用了和上面同样的函数(或部分)setTimeout(...)通知,计时器在时间到时去呼叫 scroll()函数,使得跑马灯中的文字往前进一格。 在函数的一开始,有一些较罗嗦的计算部分,但这并不难使我们了解,这些计算主要是用来取得跑马灯中的文字应该由那一个位置开始显示的用途。一开始当然是必需加一些空白在字的左边,让文字部分能尽可能靠右,然后再一字字的将空白减少,结果自然就造成字往前移动的效果了。
评论