2015-07-14 5 views
0

(Это мой первый Javascript проект, поэтому решение может быть очевидным для более опытных людей, но это не для меня!)Javascript не распознает функцию

Я пытаюсь кодировать входной сигнал из трех раскрывающихся списков. Контекст помогает людям оценить, соответствуют ли они критериям для помощи инвалидам.

  • Первый выпадающий спрашивает, может ли человек стоять вообще или нет
    (да/нет)
  • Следующий спрашивает, как далеко они могут идти (выбрать из диапазона расстояний
  • третий спрашивает, нужно ли они какие-либо средства или приспособления
    (нет/да)

в зависимости от того, насколько далеко они могут идти, они получают оценку: 12 максимальный Однако, если человек не может стоять тыс. ey автоматически получает 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; 
} 

Извините, если я не объяснил это очень хорошо и продолжил вопрос. Я искал в широком диапазоне справочных сайтов, но не могу найти ничего, что объясняет, что происходит

ответ

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" 
+0

Doh! соответственно изменила мою кодировку и устранила проблему. Большое спасибо, особенно за то, что так ясно объяснили то, что должно быть очевидно для вас! –

Смежные вопросы