JAVASCRIPT做计算器

</html>
<head>
<title>计算器</title>
<script type="text/javascript">
function enter(obj, string)
{obj.expr.value += string}
function compute(obj)
{obj.expr.value =eval (obj.expr.value)}
var one = '1'
var two= '2'
var plus= '+'
</script>
</head>
<body>
<form>
<input type="text" name="expr" size=30 action="compute(this.form)"> <tr>
<input type="button" value=" 1 " onClick="enter(this.form, one)">
<input type="button" value=" 2 " onClick="enter(this.form, two)">
<input type="button" value=" + " onClick="enter(this.form, plus)">
<input type="button" value=" = " onClick="compute(this.form)">
</form>
</body>
</html>
具体就是解释下这个this.form跟上面函数的逻辑关系,还有this form具体是干吗的

还有这个程序的算法的逻辑 就是比如说我按了一个1,触发了什么什么.调用了哪个函数什么什么的.到算出这个结果.这个中间的过程希望能讲清楚

this在JS里是指自身,就是指它自己这个元素,这儿就是指input
而this.form就是指这个input的父级元素form了
函数compute(this.form)把网页中的这个form给做为一个obj对象参数传递给了compute来执行下面
obj.expr.value =eval (obj.expr.value)
这儿的obj其实就是那个form标签,而expr是一个id
这儿是一个赋值语句,就是把obj.expr.value的值重新计算并回赋给它自己
虽然那个form中有多个input,但这些都是在form里面的,就是它的子元素,所以把compute(this.form)放在谁那儿都是可以的。

还有3个input的click事件,激活了enter(obj, string) 的函数,这儿的obj还是一个对象,string是字符串
这个函数执行obj.expr.value += string
在JS中+=就相当于把自身再加等号右边的字符,如:a+=1与a=a+1相同
这样就把计算后的数据又赋值给了obj.expr.value
由此达到计算器的目的
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-05
head>
<title>计算器</title>
<script type="text/javascript">
function enter(obj, string) //这是相当于计算机屏幕 他接受两个参数 第一个就是一个对象第二个是一个字符串
{obj.expr.value += string} //这个屏幕上的值+上字符串function compute(obj)
{obj.expr.value =eval (obj.expr.value)} //这段是将字符串变成数字 如将字符"1" 变成数字1,eval有这个功能
var one = '1' //这里预先声明one代表1
var two= '2'
var plus= '+'
</script>
</head>
<body>
<form>
<input type="text" name="expr" size=30 action="compute(this.form)"> <tr> //这个表单一旦提交就执行 compute函数,参数就是这个表单本身,那个表单提交给函数是什么意思呢?就是可以读取屏幕上面的值了!
<input type="button" value=" 1 " onClick="enter(this.form, one)">//一旦按1就触发enter函数,参数是这个表单和"1"那它的意思是什么呢?就是将1加到计算器屏幕上准备着等待提交的时候调用compute
<input type="button" value=" 2 " onClick="enter(this.form, two)">
<input type="button" value=" + " onClick="enter(this.form, plus)">
<input type="button" value=" = " onClick="compute(this.form)">
</form>
</body>
</html>
第2个回答  2011-06-05
这个我做了 。。
第3个回答  2011-06-09
this.form 是指当前这个Dom属于哪个form的 也就是 <form>...</form>这里
按1也就是调用enter这个方法 传了两个参数 form 以上面及定义的变量 “one” - var one = '1'
function enter(obj, string)
{obj.expr.value += string}

在这个方法难看出
先在form里面找到下面一级的expr这个DOM 也就是文本框name="expr"
接着是在原来的基础后面添加one这个变量 也就是 "1"
在点的话 同样的原理;
1,2,+都是这样的原理
在点击=号得时候 调用方法
function compute(obj)
{obj.expr.value =eval (obj.expr.value)}
在这里eval是js自带的一个函数 会把字符串当做js来执行
通过执行的结果最后赋值给文本框
整个原理就是这样 不懂可以在问