javascript对象不明确的问题

javascript对象不明确的问题,javascript,scope,Javascript,Scope,这是一个非常非常奇怪的问题 请参阅此代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN"> <head> <title>TEST</ti

这是一个非常非常奇怪的问题

请参阅此代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">
<head>
<title>TEST</title>
<script src="http://misc.fandongxi.com/js/jquery.1.4.js" type="text/javascript"></script>
</head>
<body>

<a href="#" id="p1">click this to change p1.x</a>
<a href="#" id="p2">click this to change p2.x</a>

<input id="p1_val" value="">
<input id="p2_val" value="">

<script language="JavaScript">

a = function(id) {

    this.inputid = id+'_val';
    othis = this;
    $('#'+id).click(function(){
        othis.x += 1;
        $('#'+othis.inputid).val(othis.x);
    });

}


p1 = new a('p1');
p1.x=1;
p2 = new a('p2');
p2.x=1;

</script>


</body>
</html>
我想单击ID p1使p1.x添加1,然后单击P2使P2.x添加1

但是

问题是单击其中任何一个…p2.x将添加1

等待回答

非常感谢:

我不擅长英语……也许我没有把问题弄清楚

您需要对函数的范围进行调整。目前它被用作全局变量

var othis = this;

我不确定你的总体目标是什么,但你问的错误是:

othis = this;
申报时应注明:

目前,只有一个othis被共享,因为它是一个全局变量,在使用它之前没有

var othis = this;