2017-05-03 48 views
-1

我知道這可能是一個蹩腳的問題,但我陷入瞭如何從循環內的函數獲取值的想法。 你們可以簡單介紹一下我應該怎麼做?如何調用循環內部的函數,並保持在那裏

的代碼看起來是這樣的:

function radioCreator(){ 
    //creates radio button 
    } 

    function main(){ 
    for (i = 0; i < nQ; i++) { 
     radioCreator("answerOption", "answer" + (i + 1)); 
     for (j = 0; j < nA; j++) { 
     //here I got some more code 

      function finished(){ 
       for (i = 0; i < nQ; i++) { 
        for (j = 0; j < nA; j++) { 
      if (document.getElementsByName("answer"+ (i + 1))[j].checked.value == true){ 
       goodAnswers ++; 
       console.log(goodAnswers); 
      } else { 
       console.log("No good answers"); 
      } 
          } 
         } 

        } 
        } 
      } 
     } 
     function getAnswers(){ 
     finished(); 
     console.log(goodAnswers); 
     } 

我想要做的就是按一下按鈕後,我想執行getAnswers()功能, 但它說:

Uncaught ReferenceError: finished is not defined 

我得到,但我不知道我想要得到的goodAnswers變量的值,我怎樣才能從外循環執行funcion 完成()

+0

爲什麼你在循環中的功能? –

+2

移動**完成**功能**主**功能外 –

+0

如果我將它移到外面不會失去i和j變量值嗎? – Przemo

回答

0

嘗試加入this.finished = finished使finished()公共方法

0

只需將法外循環,並通過指針功能。

+0

烏夫我覺得那是......我在尋找,在我的防守中我知道,但是我在我的腦海裏完全停電了 謝謝! – Przemo

0

使用main功能 一些返回的對象這樣並調用finished功能這樣main().finished()

function radioCreator() { 
//creates radio button 
} 

function main() { 
for (i = 0; i < nQ; i++) { 
    radioCreator("answerOption", "answer" + (i + 1)); 
    for (j = 0; j < nA; j++) { 
    //here I got some more code 
return { 
    finished : function() { 
     for (i = 0; i < nQ; i++) { 
     for (j = 0; j < nA; j++) { 
      if (document.getElementsByName("answer" + (i + 1))[j].checked.value == true) { 
      goodAnswers++; 
      console.log(goodAnswers); 
      } else { 
      console.log("No good answers"); 
      } 
     } 
     } 

    } 
    } 
    } 
} 
} 

function getAnswers() { 
main().finished(); 
console.log(goodAnswers); 
} 
相關問題