我声明了两个变量,COURSE_ID_List和COURSE_ID_timerId。然后将它们作为参数从OnKeyUp事件传递给SetFilter函数。
如果列表未定义,则应对其进行初始化。问题是列表始终是未定义的,因此我假设OnKeyUp事件中使用的COURSE_ID_List是按值而不是按引用传递的。我该如何解决?
谢谢
<script type="text/javascript">
function SetFilter(ddl, value, list, timerId) {
if (list == undefined)
list = new ListFilter(ddl);
clearTimeout(timerId);
timerId = setTimeout(function() { list.SetFilter(value);}, 1500);
}
var COURSE_ID_List;
var COURSE_ID_List_timerId;
</script>
<input name="Course" type="text" id="COURSE_ID" onKeyUp="SetFilter('COURSE_ID', this.value, COURSE_ID_List, COURSE_ID_List_timerId);" />
最佳答案
我认为这可能是您正在寻找的答案。
(function() {
var COURSE_ID_List = {},
COURSE_ID_List_timerId = {};
window.setFilter=function(ddl, value) {
var list = COURSE_ID_List[ddl];
if (!list) {
list = new ListFilter(ddl);
} else if(list.getFilter() == value) {
return;
}
var timerId = COURSE_ID_List_timerId[ddl];
if (timerId) {
clearTimeout(timerId);
}
COURSE_ID_List_timerId[ddl] = setTimeout(function() { list.SetFilter(value); }, 1500);
COURSE_ID_List[ddl] = list;
return;
}
})();
和
<input name="Course" type="text" id="COURSE_ID" onkeyup="setFilter('COURSE_ID', this.value);" onblur="setFilter('COURSE_ID', this.value);" />