Javascript 如何在jquery的onclick中传递参数
下面的代码正在调用index.htmlJavascript 如何在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");
<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()…这是不可能的,这是错误的!