带有数组参数的Javascript onclick
我正试图找出如何使以下代码正常工作:带有数组参数的Javascript onclick,javascript,html,arrays,parameters,Javascript,Html,Arrays,Parameters,我正试图找出如何使以下代码正常工作: <ul> <li id='anvil1' class='locked' onclick='anvil1.countCheck("anvil1", "defense", 10, event.button);'>+10 Defensive Ability</li> <li id='anvil4' class='locked' onclick='anvil4.countCheck("anvil4", "[
<ul>
<li id='anvil1' class='locked' onclick='anvil1.countCheck("anvil1", "defense", 10, event.button);'>+10 Defensive Ability</li>
<li id='anvil4' class='locked' onclick='anvil4.countCheck("anvil4", "[\"defense\", \"constitution\"]", [10, 20], event.button);'>+15 Defensive Ability <br />+20 Constitution</li>
</ul>
- +10防守能力
- +15防御能力+20体质
这些链接是从星形对象访问方法。我需要将第二个和第三个参数设置为数组,因为它们的值数量可变。例如,第一颗星anvil1有一个属性(防御)和一个值(10)。第四颗星有两个属性(防御、体质)和两个值(10、20)。我相信统计数据/值的数量可以增加到3
到目前为止,如果我尝试调用stats[0]
返回的值只是第一个字母
alert('Stats:'+Stats[0])代码>会导致一个带有Stats:d
或Stats:[
我不知道如何解决这个问题,任何建议都将不胜感激!您的数组用引号括起来。当您在字符串上使用[n]时,它将返回第n个字符。您还可以摆脱字符串转义(如elclanrs所说)您能找出区别吗
"[\"defense\", \"constitution\"]"
是一个字符串和
[10, 20]
是数组。显然,您也希望第二个参数作为数组,因此需要将调用更改为
anvil4.countCheck("anvil4", ["defense", "constitution"], [10, 20], event.button);
我不会像那样传递参数。你可以为anvil元素添加一个eventlistener,并用数据属性传递参数
请看一下下面的代码片段,或者在本文中
var-anvil={
计数检查:功能(e){
var props=this.dataset.props.split(','),
points=this.dataset.points.split(',');
console.log(this.id、props、points);
}
}
//添加事件侦听器
var anvils=document.getElementsByClassName('anvil');
对于(变量i=0;i
- +10防御能力
- +15防御能力
+20体质
为什么要在之间转义“
”
在任何情况下,我都建议在JavaScript中添加事件。检查addEventListener
您传递的不是带有“[\'defense\”,\'constitution\']”的数组,而是一个字符串。为什么不像对第三个参数那样执行此操作?[\'defense\”,\”宪法\“]
我只是想尽一切办法让它发挥作用-”“就像在第一个例子中,[](未显示),[\”],可能还有其他一些。你是建议我删除“onclick”部分,而是使用事件侦听器来调用函数?@PinkTurtle[“defence\”,“constitution\”]给出了一个语法错误。请看我的回答,我确实打错了。它应该是[“防御”,“宪法”]