繁体   English   中英

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

[英]How to pass array as parameter in javascript code function?

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

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

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

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

  2. 为了查看警报中对象的内容,请尝试使用JSON.stringify将它们转换为字符串

 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> 

您的问题与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); } 

您可能要做的就是使用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)); } 

尝试

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM