javascript
  • html
  • arrays
  • parameters
  • 2016-03-19 100 views 0 likes 
    0

    我试图找出如何使下面的代码工作:的Javascript的onclick与数组参数

    <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> 
    

    这些链接访问来自恒星对象的方法。我需要第二个和第三个参数是数组,因为它们具有可变数量的值。例如,第一个明星anvil1拥有一个属性(防御)和一个值(10)。第四颗恒星有两个属性(防御,宪法)和两个值(10,20)。我相信统计/数值的数量可以上升到3.

    到目前为止,如果我尝试拨打stats[0],返回的值只是第一个字母?

    alert('Stats: ' + stats[0]);导致一个警告框,Stats: dStats: [

    我不知道如何解决这个问题,任何建议将不胜感激!

    +1

    你为什么要当'''s的逃离'“'。在任何情况下,我会建议增加_in JavaScript_的事件。检查'addEventListener' – elclanrs

    +0

    你是不是一个合格['\“defense \”,\“constitution \”]“''但是一个字符串。为什么不像你为第三个参数做的那样?'[\”defense \“,\”constitution \“]'' '< - '这是一个数组,这就是为什么'stats [0]'是'['(字符串中的第一个字符)。 – PinkTurtle

    +0

    我只是想尽一切办法让它工作 - “”就像第一个例子,[](未示出),[\“”\],可能是其他几个。 您建议我删除'onclick'部分,而是使用事件侦听器来调用函数? – Kendra

    回答

    1

    你可以发现差异?

    "[\"defense\", \"constitution\"]" 
    

    是一个字符串,

    [10, 20] 
    

    是一个数组。显然你想你的第二个参数作为一个阵列太所以你需要改变你的电话

    anvil4.countCheck("anvil4", ["defense", "constitution"], [10, 20], event.button); 
    
    0

    你有你的数组引用。当你在一个字符串上使用[n]时,它返回第n个字符。你也可以摆脱字符串逃逸(像elclanrs说)

    0

    我不会传递这样的参数。您可以为anvil元素添加一个eventlistener并将参数传递给数据属性。

    请看下面的代码片段或者在这个jsfiddle

    var anvil = { 
     
    \t countCheck: function(e) { 
     
        \t var props = this.dataset.props.split(','), 
     
        \t \t points = this.dataset.points.split(','); 
     
        
     
        console.log(this.id, props, points); 
     
        } 
     
    } 
     
    
     
    
     
    // add eventlisteners 
     
    var anvils = document.getElementsByClassName('anvil'); 
     
    
     
    for (var i=0; i< anvils.length; i++) { 
     
    \t anvils[i].addEventListener('click', anvil.countCheck); 
     
    }
    <ul> 
     
        <li id='anvil1' class='anvil locked' data-props="defense" data-points="10">+10 Defensive Ability</li> 
     
        <li id='anvil4' class='anvil locked' data-props="defense,constitution" data-points="10,20">+15 Defensive Ability <br />+20 Constitution</li> 
     
    </ul>

    相关问题