Javascript无法识别功能

时间:2015-07-14 21:34:25

标签: javascript uncaught-typeerror

(这是我的第一个javascript项目,所以解决方案对于经验丰富的人来说可能是显而易见的,但它不适合我!)

我正在尝试编写三个下拉列表中的输入。背景是帮助人们评估他们是否符合残疾人援助的标准。

  • 第一个下拉菜单询问一个人是否可以站立 (是/否)
  • 接下来询问他们可以走多远(从一系列中选择 距离
  • 第三个问他们是否需要任何辅助或改编 (否/是)

根据他们走多远,他们得分:12是最大值。但是,如果一个人无法站立,他们会自动得到12分。另外,取决于他们是否需要任何辅助工具和改编可以影响得分。

因此,意图是拥有if-then-else功能(如果要响应无法站立的人,否则是否根据步行距离创建输出并需要进行调整,以及纯粹基于步行距离创建输出

如果直到我包含适应性下降,一切正常。问题是要做到这一点,我需要根据“步行距离”返回的值创建一个变量。功能。此时控制台返回' Uncaught TypeError:getdistancescore不是函数'。编码没有问题识别getdistancescore直到我这样做 这里是编码:(导致问题的行被标记为" //这是问题"

  //stand-yes-no
var standYN =[];
 standYN["mp1"]=0;
 standYN["mp2"]=1;

  function getstandYN(){
var standscore=0;
var theForm = document.forms["mobilityform"];
var standscore = theForm.elements["mobp1"];
getstandYN =  standYN[standscore.value];
return getstandYN;
}   
  //end standyes-no


 //distances
   var distances = [];
distances["mp3"]=0;
distances["mp4"]=4;
distances["mp5"]=8;
distances["mp6"]=12;
distances["mp7"]=12;
//note mp5 could be 10


function getdistancescore(){
var distancescore=0;
var theForm = document.forms["mobilityform"];
var distancescore = theForm.elements["mobp2"];
getdistancescore =  distances[distancescore.value];
return getdistancescore;
}
  //end distances



  //needs aid or appliance yes-no
var aiappYN =[];
     aiappYN["mp1"]=0;
     aiappYN["mp2"]=1;

  function getaiappYN(){
var aiappscore=0;
var theForm = document.forms["mobilityform"];
var aiappscore = theForm.elements["mobp3"];
getaiappYN =  aiappYN[aiappscore.value];
return getaiappYN;
}   
  //end needs aids or appliance yes-no



  //CALCULATION STARTS
  var ai_appscore = getaiappYN()
  var standingscore = getstandYN();


  //THIS IS THE PROBLEM
  var walkingdistance = getdistancescore();
  //END THIS IS THE PROBLEM

  if (standingscore == 1){
var actualscore = 12
  }

  //extra 'else if' to go here       

  else  {
var actualscore = getdistancescore();
  }
  //CALCULATION ENDS

  //display results
var divobj = document.getElementById("score");
divobj.innerHTML="Total Score "+actualscore;


var divobj = document.getElementById("check");
divobj.innerHTML="Check "+standingscore;
}

道歉,如果我没有解释得这么好,并且问题的长度。我在各种帮助网站上搜索过但无法找到解释发生了什么的内容

1 个答案:

答案 0 :(得分:2)

你知道你在getstandYN做了什么吗?

function getstandYN(){
  var standscore=0;
  var theForm = document.forms["mobilityform"];
  var standscore = theForm.elements["mobp1"];
  getstandYN =  standYN[standscore.value];
  return getstandYN;
}

getstandYN是一个函数,然后在函数中间将其重新分配给standYN[standsore.value]

请注意这里发生的事情

function foo() {
  foo = 5;
  return foo;
}

foo();            // 5
foo();            // Uncaught TypeError: foo is not a function
console.log(foo); // "5"