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
.
的范围内可见
我正在使用 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
.