我一直在开发一个名为TechX的JavaScript库。这是代码:
(function(){
function tex(s){
return new tex.init(s);
};
//declare the init selector function
tex.init = function(s){
if(!s){
return this;
}
else{
this.length = 1;
if (typeof s === "object"){
this[0] = s;
}
else if(typeof s === "string"){
var obj;
obj = document.querySelector(s);
this[0] = obj;
}
return this;
}
}
tex.prototype = {
dit : function(){
this.innerHTML = 'Hi?!?!?!';
}
};
window.tex = tex;
})();
在我的身体里,我有这个脚本来测试它:
<input type="button" id="inpt" value="click"></input>
<div id="test"></div>
<script>
var inn = document.getElementById("inpt");
inn.onclick = function(){
tex('#test').dit();
};
</script>
当我加载页面时没有错误,但是当我点击按钮时,我收到一条错误,上面写着“'undefined' is not a function (evaluating 'tex('#test').dit();')
。”
有人知道我的代码中出错了吗?我该如何修复错误?非常感谢你!
答案 0 :(得分:0)
我认为问题在于tex("#test")
会返回text.init
个对象,但.dit()
是tex
上的方法,而不是tex.init
上的方法没有方法.dit()
可以执行。
也许你想改变这个:
tex.prototype = {...}
到此:
tex.init.prototype = {...}
所以.dit()
方法将在您实际创建的对象类型上。
另外,我认为:
dit : function(){
this.innerHTML = 'Hi?!?!?!';
}
需要这样:
dit : function(){
this[0].innerHTML = 'Hi?!?!?!';
}
或者,如果你想让它像jQuery一样工作,你必须迭代所有包含的对象,如下所示:
dit : function(){
for (var i = 0; i < this.length; i++) {
this[i].innerHTML = 'Hi?!?!?!';
}
}