使用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
现在输入数量、单价和折扣,金额就会自动计算得出了: