无法使用js调用函数

时间:2015-04-08 12:26:58

标签: javascript html onkeyup

这是我的html和js:



function calculateFun()
{
	var a = document.getElementById('a').value;
	var b = document.getElementById('b').value;
	var c = document.getElementById('c').value;
	var d = document.getElementById('d').value;
	var e = document.getElementById('e').value;
	
	var f = a*b;
	document.getElementById('f').value = f;
	var g = (f + (f*(d/100))).toFixed();
	document.getElementById('g').value = g;
	var h = ((1 -((a*c)/e))*100).toFixed();
	document.getElementById('h').value = h;
	
}

<input type="number" id="a" onkeyup="calculateFun();" />
<input type="number" id="b" onkeyup="calculateFun();" />
<input type="number" id="c" value="100" />
<input type="number" id="d" value="50" />
<input type="number" id="e" onkeyup="calculateFun();" />
<br><br><p>******</p><br><br>
<input type="number" id="f" />
<input type="number" id="g" />
<input type="number" id="h" />
&#13;
&#13;
&#13;

我在JSFIDDLE中尝试了这段代码: https://jsfiddle.net/1ex3b1sa/

但它不起作用。同样在我的网站中,该功能未被调用。 这很奇怪,因为我可以用同样的方式调用我所做的其他功能。

我尝试更改为onclick,onkeypress或onkeydown,但无法看到任何结果..

任何想法?也许我有拼写错误?或者它的铬问题?

3 个答案:

答案 0 :(得分:4)

在JSFiddle中,您需要将JavaScript包装设置为 “No wrap-in <head> ,否则您将获得“未捕获的ReferenceError: calculateFun未定义为“错误。

enter image description here

确保该功能在此处:

<html>
    <head>
        <script type="text/javascript">
            function calculateFun() {
                // ...

您实际上可以将函数定义保留在onLoad换行中并更改:

function calculateFun() {

对此:

window.calculateFun = function() {

它会起作用,因为您将作为静态方法的函数添加到浏览器的Window

答案 1 :(得分:1)

在jsfiddle.net的左侧是一个包含&#34; Frameworks&amp;扩展&#34;

在第二个选择框中,您必须选择:

  

没有换行&lt; body&gt;

  

没有换行&lt; head&gt;

然后它会起作用。如果你不这样做,该函数将不会被定义,它将只运行一次(在OnLoad事件中)。

答案 2 :(得分:-2)

请学习jquery,它不是那么难,会帮助你!

你的功能jquery的小提琴:https://jsfiddle.net/1ex3b1sa/3/

输入字段得到了class ='calc' 和js:

$('.calc').keyup(function(){

var a = $('#a').val();
var b = $('#b').val();
var c = $('#c').val();
var d = $('#d').val();
var e = $('#e').val();

var f = a * b;
$('#f').val(f);

var g = (f + (f*(d/100))).toFixed();
$('#g').val(g);

var h = ((1 -((a*c)/e))*100).toFixed();
$('#h').val(h);

});