Javascript Can';t使用js调用函数

Javascript Can';t使用js调用函数,javascript,html,onkeyup,Javascript,Html,Onkeyup,这是我的html和js: 函数calculateFun() { var a=document.getElementById('a').value; var b=document.getElementById('b')。值; var c=document.getElementById('c')。值; var d=document.getElementById('d')。值; var e=document.getElementById('e').value; var f=a*b; document

这是我的html和js:

函数calculateFun()
{
var a=document.getElementById('a').value;
var b=document.getElementById('b')。值;
var c=document.getElementById('c')。值;
var d=document.getElementById('d')。值;
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;
}



******


在jsfiddle.net的左侧是一个带有“Frameworks&Extensions”的框

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

无包装

无包装


那就行了。如果不这样做,函数将不会被定义,并且只运行一次(在OnLoad事件中)。

在JSFIDLE中,您需要将JavaScript wrap设置为“No wrap-in
”,否则会出现“uncaughtreferenceerror:calculateFun未定义”错误

确保函数位于此处:

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

window.calculateFun = function() {

它将起作用,因为您正在将函数作为静态方法添加到浏览器的
窗口中

请学习jquery,它没有那么难,而且会帮助您

您在jquery中的作用:

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


因为你的小提琴放错了!代码处于onload事件中。再仔细看一下@MattyMoin JSFIDLE,您需要将JavaScript wrap设置为“No wrap-in
”,否则您将得到一个“Uncaught ReferenceError:calculateFun is not defined”错误。哦,好的,它成功了。在原始代码中,我需要把它放在头标签之间吗?因为,我在body标记之间有一个函数,它工作得很好。对于perf,除非脚本确实需要首先运行,否则通常最好将脚本标记放在结束body标记之前,否则它会阻塞。这会在网站/应用程序中引入不必要的开销,这会对性能产生很大影响。通常你应该只使用你需要的东西,所以只要他处理简单的东西,而使用外部库不会节省足够的代码或带来新的和有用的特性,简单就是一条路。顺便说一句,在我看来,他只是刚开始学习JS,所以实践和经验是他所需要的。
window.calculateFun = function() {
$('.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);

});