JS oop 在 Internet Explorer 中不起作用

JS oop not work in Internet Explorer

我正在使用 WAMP 开发一个网站,这是我网站中的一部分代码。我什至检查了下面提到的这段代码。

html 页

<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript" src="Functions/jquery.min.js"></script>
        <script type="text/javascript" src="Functions/listControl.js"></script>
        <script type="text/javascript">
            var users= new regUsers('load','bef','full');
        </script>
    </head>
    <body>

    </body>

</html>

javascript 页

function regUsers(id,pos,detail)
    {
        /*
            usr001 all users
            usr002 search users on keyword
        */
        var self=this
        this.count=0;
        this.id='#' + id;
        this.pos=pos;
        this.amount=0;
        this.detail=detail;
        this.countReset= function(){this.count = 0;};
        this.getList=function()
            {
                console.log('count : ' + self.count);
                $.ajax({
                    type:'POST',
                    url:'Functions/list.php',
                    data:{req:'usr001',off:this.count,detail:this.detail,amount:self.amount},
                    success:function(ans){
                        if(ans=="")
                            return;
                        else
                        {

                            self.count += parseInt(self.amount);
                            switch(self.pos)
                            {                           
                                case 'bef':
                                    $(ans).insertBefore(self.id);
                                    break;
                                case 'app':
                                    $(self.id).append(ans);
                                    console.log(ans);
                                    break;
                            }
                        }
                    }
                });

            }
        this.findRec=function(keyW='',cls,field)
            {
                if(keyW=='')
                {
                    self.getList();
                    return;
                }
                $.ajax({
                    type:'POST',
                    url:'Functions/list.php',
                    data:{req:'usr002',keyW:keyW,detail:this.detail,field:field},
                    success:function(ans){
                        self.countReset();
                        $("."+ cls).remove();
                        switch(self.pos)
                        {                           
                            case 'bef':
                                $(ans).insertBefore(self.id);
                                break;
                        }
                    }
                });
            }
    }

此代码在 Firefox 中正常工作,但在 Internet Explorer 中无效。在 Internet explorer 控制台中,据说没有定义 regUsers。

可能是 Internet Explore 在加载内联脚本后加载 JS 文件,我知道这样做可能没有多大意义,但这可能是特定的 IE 问题。你可以做的是将 var users= new regUsers('load','bef','full'); 放在第三个 JS 文件中,或者你可以将值分配给 body 标签的 unload 中的 users,即

<body onload="users = new regUsers('load', 'bet', 'full')">
    . . .
</body>

这将确保您的初始化代码在网页加载后执行。由于 users 是用 var 声明的,它成为一个全局变量,用 var users = … 声明会使它仅在 onload.

的范围内可见