如何在JavaScript代码函数中将数组作为参数传递?

时间:2019-07-20 07:31:43

标签: javascript html

我正在将对象数组发送给打印功能,但无法正常工作。

<script>
var items = [{
    "id": "1",
    "name": "rishi"
}, {
    "id": "2",
    "name": "xyz"
}];
var output = "<button type='button' onClick='print(" + items + ")'>Print</button>";
document.getElementsByTagName("body").innerHTML = output;

function print(data) {
    alert(data);
}
</script>

<body>

</body>

<script>
var items = [{
    "id": "1",
    "name": "rishi"
}, {
    "id": "2",
    "name": "xyz"
}];
var output = "<button type='button' onClick='print(" + items + ")'>Print</button>";
document.getElementsByTagName("body").innerHTML = output;

function print(data) {
    alert(data);
}
</script>

<body>

</body>

当我点击打印时,它应该返回数组

4 个答案:

答案 0 :(得分:0)

  1. getElementsByTagName返回元素的集合,因此您应该通过索引[0]

  2. 访问body元素。
  3. 为了查看警报中对象的内容,请尝试使用JSON.stringify

  4. 将其转换为字符串

var items = [{
    "id": "1",
    "name": "rishi"
}, {
    "id": "2",
    "name": "xyz"
}];
items = JSON.stringify(items.map(JSON.stringify))
var output = "<button type='button' onClick='print(" + items + ")'>Print</button>";
document.getElementsByTagName("body")[0].innerHTML = output;

function print(data) {
    alert(data);
}
<body>
</body>

答案 1 :(得分:0)

您的问题出在document.getElementsByTagName("body").innerHTML上。 .getElementsByTagName不返回单个元素,它返回包含所有正文标签的HTMLCollection。想象一下,如果您将"p"传递给相同的方法;可能有多个p标签,因此您需要取回一个集合,而不仅仅是一个元素。

相反,您可以使用document.querySelector('body')来返回<body>的第一个找到的元素,然后可以在其上使用.innerHTML

最后,您需要对items数组进行字符串化处理,以便在将其传递到print方法中时将其保留

请参见以下示例:

var items = [{
    "id": "1",
    "name": "rishi"
}, {
    "id": "2",
    "name": "xyz"
}];

var output = "<button type='button' onClick='print("+ JSON.stringify(items) + ")'>Print</button>";
document.querySelector("body").innerHTML = output;

function print(data) {
  console.log(data);
  alert(data);
}

答案 2 :(得分:0)

您可能要做的是使用document.getElementsByTagName("body")[0]获得getElementsByTagName返回的第一项

然后调用函数print,将项目作为参数onClick=print(items)传递

var items = [{
  "id": "1",
  "name": "rishi"
}, {
  "id": "2",
  "name": "xyz"
}];

var output = "<button type='button' onClick=print(items)>Print</button>";
document.getElementsByTagName("body")[0].innerHTML = output;

function print(data) {
  alert(JSON.stringify(data));
}

答案 3 :(得分:0)

尝试

function print(data) { alert(JSON.stringify(data)); }

否则,在这种情况下,您只会获得显示为Object的数据类型