Javascript函数不会加载到onkeyup和onclick事件
Javascript function does NOT load to onkeyup and onclick events
我正试图制作一个有4个选项(/*+-)的简单计算器,但不知何故,我的onclick和onkeyup事件拒绝工作。我尝试了各种方法来使我的事件工作(添加preventDefault,返回false),然后我放弃了,因为我无法修复它。如果你不介意,请帮帮我!
HTML:
<body>
<div id="wrap">
<div id="header">
<h1>Simple Calculator</h1>
<form name="form" id="form">
<input type="number" name="addta1" onkeyup="calc();"/>
<span id="plusadd">+</span>
<input type="number" name="addta2" onkeyup="calc();"/>
=
<span id="addresult"></span>
<br/>
<input type="number" name="subta1" onkeyup="calc();"/>
-
<input type="number" name="subta2" onkeyup="calc();"/>
=
<span id="subresult"></span>
<br/>
<input type="number" name="multa1" onkeyup="calc();"/>
*
<input type="number" name="multa2" onkeyup="calc();"/>
=
<span id="mulresult"></span>
<br/>
<input type="number" name="divta1" onkeyup="calc();"/>
/
<input type="number" name="divta2" onkeyup="calc();"/>
=
<span id="divresult"></span>
<br/>
<div class="buttonwrap">
<input onclick="calc();" type="submit" value="Submit" name="submit" method="post"/>
<input type="reset" value="Reset" name="reset"/>
</div>
</form>
</div>
</div>
</body>
Javascript:
function calc() {
var addOne = parseInt(document.form.addta1.value);
var addTwo = parseInt(document.form.addta2.value);
var subOne = parseInt(document.form.subta1.value);
var subTwo = parseInt(document.form.subta2.value);
var mulOne = parseInt(document.form.multa1.value);
var mulTwo = parseInt(document.form.multa2.value);
var divOne = parseInt(document.form.divta1.value);
var divTwo = parseInt(document.form.divta2.value);
var addResult = addOne + addTwo
var subResult = subOne - subTwo
var mulResult = mulOne * mulTwo
var divResult = divOne / divTwo
document.getElementById('addresult').innerHTML = addResult;
document.getElementById('subresult').innerHTML = subResult;
document.getElementById('mulresult').innerHTML = mulResult;
document.getElementById('divresult').innerHTML = divResult;
}
下面是一个对CSS的篡改:http://jsfiddle.net/rPCYf/我会像往常一样代表并批准每一个有用的帖子!提前感谢!
当您将jsfiddle中的wrap选项从"onLoad"更改为"no wrap-in"时,它将起作用。
请参见此处:http://jsfiddle.net/rPCYf/1/
// no code changed
这个答案解释了这一点,并为您提供了更多的选择。
您的提交按钮需要返回false,以防止刷新页面(或使用任何其他方法)。
另一个建议是,使用"onchange"而不是"onkeyup"来观察输入字段中的更改(理想情况下,不使用html属性,而是使用组绑定)。。。请参阅此处(我只更改了前两个字段):http://jsfiddle.net/rPCYf/2/
总结
- 将jsfiddle换行选项更改为"无换行…"
- 阻止提交按钮的默认操作(最简单的方法是在onclick调用中返回false)
- 考虑使用change监听器而不是keyup监听器,因为这将处理按键、按钮点击、鼠标滚轮操作等。这是实现所需行为的更自然的方法
- 例如,通过一个类对适当的输入字段进行分组,并以这种方式绑定事件侦听器,而不是为每个实例使用HTML属性,这将使代码更具可读性和可维护性
您选择了"onload"作为JSFiddle中JS的包装器。这将所有JS封装在一个函数中,该函数在加载事件触发时调用。
这样做的一个结果(通常是所希望的)是,您的函数不再是全局函数。
由于它们不是全局的,它们超出了您的内在事件属性的范围。
用JavaScript而不是HTML属性绑定事件处理程序。
addEventListener('keypress', calc);
http://jsfiddle.net/rPCYf/3/
相关文章:
- onkeyup无法动态创建多个文本区域
- 如何在执行此特定onclick事件时执行JavaScript函数
- Setting default onclick behavior for <img> tag in gene
- Javascript全局onclick监听器
- 如何调用“;链接_;在onclick事件上使用Javascript
- onclick函数需要双击,因为类分配延迟
- 如何使用jquery迭代具有相同属性的html元素并查找onclick事件
- 使用onclick绘制SVG路径
- 如何将数据从onclick按钮传递到变量
- 选择onclick事件jquery
- I'我设计了一个下拉菜单,onclick会出现,而on blur会消失
- 如何刷新列表框内容onclick或blur事件
- OnClick/Onhover Javascript/jquery
- 使用onkeyup JS事件检查输入的值是否唯一
- 执行php函数的onclick事件的其他替代方案
- Javascript onclick函数会立即调用(而不是在单击时调用)
- 动态创建OnClick事件Javascript
- onclick风格的整个李不想要
- Javascript函数不会加载到onkeyup和onclick事件
- onkeyup或onclick JavaScript自动提交表单