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