0
 <html>
 <head>
 <title> Buttons</title>
 <style type="text/css">

.intro{background-color:;}
.duction{background-color:blue;}
.function{background-color:grey;}
.equals{background-color:orange;}
</style>





</head>
<body>
<form name="calculator">
<input type="text"  name="display" length="50" width="100">
<div>
<input type= "button" value="7" class="intro" id="7" onclick="one(7)"></button>
<input type= "button" value="8" class="intro" id="8" onclick="one(8)"></button>
<input type= "button" value="9" class="intro" id="9" onclick="one(9)"></button>
<input type= "button" value="+" class="intro" id="+" onclick="one(+)"></button>
<input type= "button" value="-" class="intro" id="-" onclick="one(-)"></button>
<div>
<input type= "button" value="4" class="intro" id="4" onclick="one(4)"></button>
<input type= "button" value="5" class="intro" id="5" onclick="one(5)"></button>
<input type= "button" value="6" class="intro" id="6" onclick="one(6)"></button>
<input type= "button" value="x" class="intro" id="x" onclick="one(*)"></button>
<input type= "button" value="/" class="intro" id="/" onclick="one(/)"></button>
<div>
<input type= "button" value="1" class="intro" id="1" onclick="one(1)"></button>
<input type= "button" value="2" class="intro" id="2" onclick="one(2)"></button>
<input type= "button" value="3" class="intro" id="3" onclick="one(3)"></button>
<input type= "button" value="=" class="intro" ></button>
<div>
<input type= "button" value="0" class="intro" id="0" onclick="one(0)"></button>
<input type= "button" value="." class="intro" id="." onclick="one(.)"></button>
<input type= "button" value="c" class="intro" onclick="clearDigit()"></button>

<script type="text/javascript" src="C:\Users\LS\Desktop\QBJS\button.js">



</script>



</body>
</html>

Javascript

function one(event)
{
clearTimeout(timer);
timer=setTimeout("AddDigit(object)",500);
object=event;
}

//表示ウィンドウに数字を入力するたびに、実際の電卓のように数字を連結するのではなく、前の数字を置き換えます。また、関数シンボルを表示ウィンドウに表示できない理由を突き止めようとしています.... setTimeout と関係があると思われます....

  function AddDigit(x)
  {
  object=x;
  if (eval(digit) == 0)
   {digit = object;}
   else
   {digit = digit + object;}

 document.calculator.display.value=object;

 } 
4

2 に答える 2

0

連結も追加もしていません。そのままでは通れません。その理由は、文字列でコールバックを発行すると、関数のみが呼び出されるためです。パラメータを渡したい場合は、クロージャを作成してそこに渡す必要があります。

これを試して:

timer=setTimeout(function(){ AddDigit(object); },500);

おそらくあなたが渡すつもりだったのはイベントでした:

timer=setTimeout(function(){ AddDigit(event); },500);

また

object = event;
timer=setTimeout(function(){ AddDigit(object); },500);

また、AddDigit では、代わりにこれが必要になる可能性があります。

document.calculator.display.value += object;
于 2012-10-18T01:14:29.257 に答える
0

あなたはやっている、

document.calculator.display.value=object;

しかし、連結されたバージョンは「数字」変数です。

于 2012-10-18T01:17:51.540 に答える