我正在将对象数组发送给打印功能,但无法正常工作。
<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>
当我点击打印时,它应该返回数组
答案 0 :(得分:0)
getElementsByTagName
返回元素的集合,因此您应该通过索引[0]
为了查看警报中对象的内容,请尝试使用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>
答案 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
的数据类型