在js中使用onClick传递数组

时间:2019-05-18 02:25:21

标签: javascript

所以我在下面有这段代码。每当我单击按钮时,它都会转到render_initialize_board和console.log仅记录固定数组的第一个元素。如何在javascript中使用onclick将整个数组传递给函数?

function render_initialize_board(N,fixed){
     console.log(fixed);
}

 N = 4;
 var fixed = [0,1,0,0]

  $("#header ul").append('<li><a href="#'+N+'" data-toggle="tab" onclick="render_initial_board('+N+','+fixed+')">'+ N +'</a></li>');

2 个答案:

答案 0 :(得分:1)

您的报价过多。使用这些引号,您可以将数组的字符串表示形式传递给函数,从函数的角度看,该字符串表示形式类似于每个元素的单独参数。您可以使用:

onclick="render_initialize_board(N, fixed)"

function render_initialize_board(N, fixed, fixed2) {
  console.log(fixed);
}

N = 4;
var fixed = [9, 1, 0, 0]

$("#header ul").append('<li><a href="#' + N + '" data-toggle="tab" onclick="render_initialize_board(N, fixed)">' + N + '</a></li>');
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="header">
  <ul>
    </ul>
</div>

答案 1 :(得分:0)

通过连接这些字符串和变量,fixed数组将被转换为字符串。 因此,在处理click事件时,函数调用如下所示:render_initialize_board(4, 0, 1, 0, 0)

在这种情况下,fixed参数实际上等于0。

要在避免出现问题的同时使其更易于阅读,只需使用jQuery的click方法。

function render_initialize_board(N, fixed) {
  console.log(fixed);
}

var N = 4;
var fixed = [0, 1, 0, 0];

$("#header ul")
  .append('<li><a href="#' + N + '" data-toggle="tab">' + N + "</a></li>")
  .click(() => render_initialize_board(N, fixed)); // Replace "onclick" with this