2017-02-22 286 views
0

这是我的代码的Javascript输出不正确

var form = document.getElementById("addStudent"); 
 

 
form.addEventListener("submit", function(event) { 
 
    // Get form items 
 
    var jerseyNumber = document.getElementById("jerseyNumber").value; 
 
    var completions = document.getElementById("completions").value; 
 
    var attempts = document.getElementById("attempts").value; 
 
    var player = new Object(); 
 
    player.attempts = attempts; 
 
    player.completions = completions; 
 
    player.jerseyNumber = jerseyNumber; 
 

 
    function percentage() { 
 
    var e = ((player.completions/player.attempts) * 100); 
 
    return e; 
 
    } 
 

 
    function showResults(event) { 
 
    document.getElementById("results").innerHTML = "Freethrow Percentage for # " + player.jerseyNumber + " is " + percentage.e + "%"; 
 
    } 
 
    showResults(); 
 
    resetForm(jerseyNumber, completions, attempts); 
 
    event.preventDefault(); // Stop the form from submitting 
 
}, false); 
 

 
// Resets the form after it's submitted 
 
function resetForm(jerseyNumber, freethrowCompleted, freethrowAttempts) { 
 
    jerseyNumber.value = ""; 
 
    freethrowCompleted.value = ""; 
 
    freethrowAttempts.value = ""; 
 
}

和输出 “为#23 Freethrow百分比是未定义%”

,基本上我不知道为什么e返回为undefined

而这正是我尝试做

  1. 提交表单后,你的程序必须创建一个JavaScript对象来代表玩家。对象必须具有属性以包含球衣号码,他们的投篮尝试和射门完成。对象还必须包含计算球员罚球命中率的方法。下面是公式:Math.round(completed/attempts * 100)
  2. 然后,您必须创建一个名为showResults()的函数,将此学生对象作为参数,并在屏幕上以id =“结果显示div的结果”。以下示例使用此HTML:<h4>Freethrow Percentage for #23: 94%</h4>。射击百分比必须用百分号四舍五入到最接近的整数(请参阅上面的公式和下面的截图)。
+1

你写出'percentage.e',但有没有分配给这个值。 * e *是一个变量,而不是对象属性。变量不可用作函数的属性,你需要'... + percentage()+ ...'。 – RobG

+1

要调用一个函数,在其后加上括号,'percentage()'。 – Barmar

回答

0

您应该做percentage(),调用您的百分比方法,而不是试图引用属性的百分比e属性。

+0

功能之后没有'.e'。 – Barmar

+0

Doh!谢谢:)忽视 –

0
document.getElementById("results").innerHTML = "Freethrow Percentage for # " + player.jerseyNumber + " is " + percentage.e + "%"; 

应该是:

document.getElementById("results").innerHTML = "Freethrow Percentage for # " + player.jerseyNumber + " is " + percentage() + "%"; 

percentage是一个函数的名称,而不是一个对象。要调用一个函数,你需要在后面加括号。 e是它返回的局部变量的名称,而不是属性。

0

我认为这是因为你的函数不是你的对象的一部分。尝试在这样的对象中包含percentage函数。

var player = new Object(); 
player.attempts = attempts; 
player.completions = completions; 
player.percentage = function() { 
    var e = ((player.completions/player.attempts * 100); 
    return e; 
} 

然后你可以调用该函数的字符串中有player.percentage()

0

更换
document.getElementById("results").innerHTML = "Freethrow Percentage for # "+player.jerseyNumber+" is "+percentage.e+"%";
有了:

document.getElementById("results").innerHTML = "Freethrow Percentage for # "+player.jerseyNumber+" is "+percentage()+"%";