我有一个测量函数执行时间的函数,并在每次执行后清理DOM:
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;
}
}
但是我给了我:Uncaught TypeError:testFunc不是函数;
示例:
measureTimeExecution("div1", createList_Task_3("div1"));
是否有可能在measureTimeExecution中以某种方式获取domID作为testFunc的参数?
答案 0 :(得分:3)
问题是当你调用measureTimeExecution("div1", function () { createList_Task_3("div1"); });
时,你正在运行参数,而是再次传递一个函数。
看看它应该有效的代码
{{1}}
答案 1 :(得分: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;
}
}
}