javatechinfo
2019-08-23 09:13
采纳率: 100%
浏览 1.1k

JS中封装对象里的事件函数调用内部函数不执行 请高手指点

imgDbClick: function(){
clearTimeout(clickTimeId);
var tb = this.getElementsByClassName('thumbnail')[0];
var imginfo=imgManger.getImgInfo(tb,4)//这是成功代码 特别感谢qq37744644 原来用的是this.getImgInfo 报错 但是在对象内别的方法调用正常 除了单双击事件里(就封装了这2个事件函数)
imgedit(imginfo);
},

init: function(){
var self = this;
var imgObjs = document.getElementsByClassName(cn);
for (var i = 0; i < imgObjs.length; i++) {
imgObjs[i].ondblclick = self.imgDbClick;
imgObjs[i].onclick = self.imgClick;
imgObjs[i].onmouseenter = self.imgHover;
imgObjs[i].onmouseleave = self.imgOut;
};
},
setImgObj: function(imginfo){

        var tb=this.getImgObj(imginfo[0]);
        if(!tb){alert('Object not find!');return false;}
        var imgobj=tb.childNodes[1];
        var caption = tb.getElementsByClassName('caption')[0];  


         imgobj.src=imginfo[2];
         caption.childNodes[1].innerText=imginfo[3];
         caption.childNodes[3].innerText=imginfo[1];
         caption.childNodes[5].innerText=imginfo[4];

         return true;

    },
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • qq_351734088 2019-08-23 09:47
    已采纳

    只是单纯的js封装的话,不能用this.调用,应该用外部定义的变量调用:
    (function () {
    var test = {
    constructor: function () {
    console.log('11111')
    },
    init: function () {
    test.constructor() //像这样调用
    }

    };
    module.exports = test;
    

    })();

    点赞 打赏 评论
  • Yirujet 2019-08-23 09:20

    贴出完整的对象,只把两个方法丢在这,让人怎么看?

    点赞 打赏 评论
  • 毕小宝 2019-08-23 09:24

    看代码,你这个调用本身就是在 setImgObj 函数的定义方法体中呢。
    F12 看看具体报的错误信息是什么。

    点赞 打赏 评论
  • 代码的灵魂是bug! 2019-08-23 09:30

    报错信息是什么,代码看不出什么问题,也有可能是参数错误也说不定

    点赞 打赏 评论

相关推荐 更多相似问题