我有这段代码:
var history = {
stack : [],
counter : -1,
add : function(item){
this.stack[++this.counter] = item;
this.doSomethingWith(item);
// delete anything forward of the counter
this.stack.splice(this.counter+1);
},
undo : function(){
this.doSomethingWith(this.stack[--this.counter]);
},
redo : function(){
this.doSomethingWith(this.stack[++this.counter]);
},
doSomethingWith : function(item){
// show item
}
};
当我尝试以这种方式使用它时,它不起作用;
var item = $('#myDiv');
history.add(item);
我有这个错误:
未捕获的TypeError:undefined不是函数
我该如何解决这个问题?谢谢!
答案 0 :(得分:3)
问题是您为对象选择了错误的名称。 History
对象中的内置版本可用window.history
。所以将你的名字改名为别的东西,它应该有效。例如:
var appHistory = {
stack : [],
counter : -1,
...
};
您也可以通过将代码包装到IIFE中来修复它,以便history
成为局部变量。但我仍然建议选择不那么令人困惑的名字。
答案 1 :(得分:1)
如果你把它放在其他代码后面它会很好:
var item = $('myDiv');
history.add(item);
如果将它放在前面,则尚未定义该功能。 工作示例:http://jsfiddle.net/LqrpW/
答案 2 :(得分:0)
$('myDiv')
替换为$('.myDiv')
或$('#myDiv')