使用JavaScript文件

本节内容要使用到JavaScript。

即使您没有掌握JavaScript,也没有关系,因为真的很简单。

假定在以下网页中,希望输入单价、折扣和数量后,能即时计算出金额:

要完成这个任务,就需要使用Javascript来编写脚本了。

知识准备

下面会对本节要使用的JavaScript知识做一个简单的介绍。

教会你JavaScript,并不是我们的任务, 如果你有兴趣进行进一步的了解,可以访问:http://www.w3school.com.cn/b.asp

我个人建议你花上一两天时间,通过上述网页,掌握一下JavaScript的基础知识。

首先是一个重要的提示:JavaScript是区分大小写的,例如calc和Calc是两个不同的变量或函数,逻辑值是true和false,写成True和False,也是不行的。

1、如何引用表单元素

我们在设计表单的时候,需要给输入框指定id属性和name属性,例如:

sb.appendLine("单价: <input Type='number' name='dj' id='dj'>")

表示定义了一个输入框用于输入单价,这个输入框的id和name都是"dj",id和name属性可以设置为不同的值,除非有特殊需要,一般设置为相同的值即可。

我们可以在js代码中直接通过id属性引用这个输入框,例如:

dj.value

表示单价输入框的值,这是一种简写方式,使用起来很方便。

还有一种更为标准的写法,例如下面的代码,同样是表示单价输入框的值:

document.getElementById('dj').value

前一种方法更为简洁,但后一种方法更为标准,多数编程书籍使用的都是后一种方法,本帮助文件两种都用。

2、网页事件

网页中所有元素都是有事件的,例如单击按钮,会触发按钮的onclick事件,修改输入框的内容,会触发输入框的onchange事件。

我们可以在设计网页的时候,指定事件触发后要执行的代码,例如:


sb
.appendLine(
"
单价: <input Type='number' name='dj' id='dj' onchange='calc()'>")

表示修改单价输入框的内容后,执行calc函数,注意函数名是区分大小写的,括号也是不能省略的。

3、在哪里写代码

JavaScript代码一般放在单独的文本文件中,后缀名为js,你可以直接用记事本编写js代码,我个人喜欢结合nodepad++和Dreamweaver编写,前者可以让我更方便地分析代码结构,后者可以帮我检查出语法错误。

编写好的js代码一般放在某个子目录下,例如本帮助文件所有的js代码,都放在"d:\web\lib"目录下。

编写好的js代码,并不会自动自动生效,我们在设计网页的时候,还需要将编写好的js代码文件,引入到网页中,例如:

sb.appendline("<script src='./lib/calc.js'></script>")

表示将lib子目录下的calc.js文件引入到网页中。

有了上面的知识,我们就能很轻松地完成自动计算金额的任务了。

设计步骤

1、在"d:\web"目录下,建立一个子目录lib,在这个子目录中新建一个文本文件,文件名为"calc.js",文件内容为:

function calc(){
    je.value = dj.value * sl.value * (1 - zk.value);
}

上述的代码定义了一个名为calc的函数,用于根据单价(dj)、数量(sl)和折扣(zk)的值,计算出金额。

2、然后修改HttpRequest事件的代码,在有变动的地方,我加上了注释:

Dim fl As String = "d:\web\" & e.path
If
filesys.FileExists(fl)
    Dim idx As Integer = fl.LastIndexOf(".")
    Dim ext As String  = fl.SubString(idx)
    Select Case ext
        Case ".jpg",".gif",".png",".bmp",".wmf",".js"
'
这里加上了js扩展名
            e.WriteFile(fl)
    End
Select

Else

    Dim sb As New StringBuilder
    sb.appendLine("<!doctype html>")
    sb.appendLine("<html>")
    sb.appendLine("<head>")
    sb.appendLine("<meta charset='utf-8'>")
    sb.appendLine(
"<title>
表单</title>")
    sb.appendLine("</head>")
    sb.appendLine("<body>")
   
sb.appendLine("<form enctype='multipart/form-data' method='post' id='form1' name='form1'>")
    sb.appendLine(
"
产品: <input name='cp' id='cp'><br/><br/>")
    sb.appendLine(
"
客户: <input name='kh' id='kh'><br/><br/>")
    sb.appendLine(
"
雇员: <input name='gy' id='gy'><br/><br/>")
    sb.appendLine(
"
单价: <input Type='number' name='dj' id='dj' onchange='calc()'><br/><br/>") '加上事件触发
    sb.appendLine(
"
折扣: <input Type='number' name='zk' id='zk' step='0.01' onchange='calc()'><br/><br/>")
    sb.appendLine(
"
数量: <input Type='number' name='sl' id='sl' onchange='calc()'><br/><br/>")
    sb.appendLine(
"
金额: <input Type='number' name='je' id='je' readonly><br/><br/>")
    sb.appendLine(
"
日期: <input Type='date' name='rq' id='rq'><br/><br/>")
    sb.appendLine(
"<input Type='submit' name='Sumbit' id='Sumbit' value='
确定'>")
    sb.appendLine("</form>")
    sb.appendline("<script src='./lib/calc.js'></script>") '
引入脚本文件
    sb.appendLine("</body>")
    sb.appendLine("</html>")
    e.WriteString(sb.ToString)

End If

现在输入数量、单价和折扣,金额就会自动计算得出了:


本页地址:http://www.foxtable.com/mobilehelp/topics/0016.htm