2015-05-14 44 views
1

我有一個衡量的功能時執行,每個執行後清除DOM的函數:獲取執行函數的參數函數的Javascript

function measureTimeExecution(domID, testFunc){ 
    console.time("timer"); 
    for(var i = 0; i < 10; i++){ 
     testFunc(); 
     var getDiv = document.getElementById(domID); 
    } 
    getDiv.empty(); 
    console.timeEnd("timer"); 
} 

功能創建新的UL

function createList_Task_2(divID){ 
     var createNewUL = document.createElement("ul"); 
     createNewUL.id = "phoneList"; 
     document.getElementById(divID).appendChild(createNewUL); 
     for(var i = 0; i < phones.length;i++){ 

      var chunk = "<li>" + phones[i].age +"<br>" + phones[i].id +"<br><img src='" 
       + phones[i].imageUrl +"'/><br>" + phones[i].name + "<br>" + phones[i].snippet + "</li>"; 

      document.getElementById("phoneList").innerHTML += chunk; 
     } 
    } 

但IY給我:Uncaught TypeError:testFunc不是一個函數;

例子:

measureTimeExecution("div1", createList_Task_3("div1")); 

是否有可能得到某種方式domID在measureTimeExecution作爲testFunc的說法?

回答

3

問題是當你打電話measureTimeExecution你運行的參數,而是再次傳遞一個函數。

看看這個代碼,它應該工作

measureTimeExecution("div1", function() { createList_Task_3("div1"); }); 
3
function measureTimeExecution(domID, testFunc) 

函數需要第二個參數是一個函數,但調用它像measureTimeExecution("div1", createList_Task_3("div1"));,它提供了createList_Task_3("div1")回報。由於createList_Task_3不會返回任何內容,因此默認返回值爲undefined

因爲這是一個功能以及能夠提供的ID,它應該返回這樣的功能:

function createList_Task_2(divID){ 
    return function(){ 
    var createNewUL = document.createElement("ul"); 
    createNewUL.id = "phoneList"; 
    document.getElementById(divID).appendChild(createNewUL); 
    for(var i = 0; i < phones.length;i++){ 

     var chunk = "<li>" + phones[i].age +"<br>" + phones[i].id +"<br><img src='" 
      + phones[i].imageUrl +"'/><br>" + phones[i].name + "<br>" + phones[i].snippet + "</li>"; 

     document.getElementById("phoneList").innerHTML += chunk; 
    } 
    } 
}