Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在jquery的onclick中传递参数_Javascript_Jquery_Oop - Fatal编程技术网

Javascript 如何在jquery的onclick中传递参数

Javascript 如何在jquery的onclick中传递参数,javascript,jquery,oop,Javascript,Jquery,Oop,下面的代码正在调用index.html <script src="js/jquery/jquery-1.8.2.min.js"></script> <script src="js/px.js" type="text/javascript" ></script> <script type="text/javascript"> var newGame = new px1("black");

下面的代码正在调用index.html

    <script src="js/jquery/jquery-1.8.2.min.js"></script>
    <script src="js/px.js" type="text/javascript" ></script>
    <script type="text/javascript">
        var newGame = new px1("black");
        new px1Generator(newGame);
    </script>

var newGame=新px1(“黑色”);
新PX1发生器(新游戏);
下面的代码在px.js中

var px1 = function (color) {
   if (color == "white") {
        this.x = "100";
   } else if (color == "black") {
        this.x = "900";
   }};
var px1Generator= function (px1obj) {
    for (i = 0; i < 10; i++) {
        $("#mainGame").append("<div class='pawn white'></div>");
    }
    //for 10 object upon add onClickEvent
    $(".pawn.white").on("click", function (event, px1obj) {
       alert(px1obj.x)
    });
};
var px1=函数(颜色){
如果(颜色=“白色”){
这个.x=“100”;
}否则如果(颜色=“黑色”){
这个.x=“900”;
}};
变量px1Generator=函数(px1obj){
对于(i=0;i<10;i++){
$(“#主游戏”)。追加(“”);
}
//添加OnClick事件时的10对象
$(.pawn.white”)。打开(“单击”,函数(事件,px1obj){
警报(px1obj.x)
});
};
我想发送100或900到onclick函数,怎么做?
错误与用户单击divs时一致,您需要从单击回调函数签名中删除px1obj参数,因为您正在覆盖它

px1obj已经存在于px1Generator函数作用域中,您正在onclick回调作用域中重写它

$(函数(){
函数px1(颜色){
如果(颜色=“白色”){
这个.x=“100”;
}否则如果(颜色=“黑色”){
这个.x=“900”;
}};
函数px1生成器(px1obj){
对于(i=0;i<10;i++){
$(“#主游戏”)。附加(“a”);
}
//添加OnClick事件时的10对象
$(.pawn.white”)。在(“单击”上,函数(事件){
console.log(px1obj.x)
});
};
var a=新的px1(“黑色”);
PX1发生器(a);
});

这里有两个问题。首先,当您现在运行代码时,您将看到以下错误:

未捕获类型错误:px1不是构造函数

这是因为您试图在函数存在之前实例化它。您需要首先定义函数,或者更改为使用显式函数定义

其次,问题本身也会影响到它,因为您已经将
px1obj
重新定义为
click
事件处理程序上的一个参数,该参数将永远不会被定义。这将隐藏在外部范围中定义的
px1obj
。要解决此问题,只需从事件处理程序中删除该参数:

var newGame=newpx1(“黑色”);
新PX1发生器(新游戏);
函数px1(颜色){
如果(颜色=“白色”){
这个.x=“100”;
}否则如果(颜色=“黑色”){
这个.x=“900”;
}
};
函数px1生成器(px1obj){
对于(i=0;i<10;i++){
$(“#主游戏”)。追加(“”);
}
//添加OnClick事件时的10对象
$(.pawn.white”)。在(“单击”上,函数(e){
console.log(px1obj.x)
});
};


pawn white
您是否尝试过
此.x
?是的,我尝试过,但不是真的,此.x指向div对象,例如$(this.hasClass(“pawn”);将返回“true”
var px1=function px1(color){
。?@RoryMcCrossan因为我复制粘贴了他的代码,修复了,谢谢。另一种方法是在.on(事件、选择器、数据、处理程序(eventObject))中使用数据,是吗!?我不明白这部分内容,这是因为你不能用new实例化命名函数。你必须使用显式函数定义。你能解释一下吗!抱歉-我的措辞不好。我更新了它。是的,现在清楚了!在上一个版本中,你好像说:var SomeClass=function()…这是不可能的,这是错误的!