簡體   English   中英

將對象數組傳遞給另一個函數 onclick

[英]Pass an array of objects to another function onclick

我只是想問如何將對象數組傳遞給另一個函數。 我有一個功能

 function btnB(weekly) {
    console.log(weekly);
 }

 function btnA() { 
    const array = [{ abc : 123 }, { def : 456 }]        
    div.innerHTML = `<div onclick="btnB(${array[0]});"`;
    divList.appendChild(div);        
 }

 btnA();

我收到一個錯誤

Uncaught SyntaxError: Unexpected identifier

您不能在模板文字中替換這樣的對象。 它將對象轉換為字符串,返回[Object object]

使用JSON.stringify()將其轉換為對象字面量。

function btnA() { 
    const array = [{ abc : 123 }, { def : 456 }]        
    div.innerHTML = `<div onclick='btnB(${JSON.stringify(array[0])});'`;
    divList.appendChild(div);        
 }

您還應該在onclick值周圍使用單引號,因為 JSON 在對象鍵周圍使用雙引號。

function btnB(weekly) { console.log(weekly); } function btnA() { const array = [{ abc : 123 }, { def : 456 }]; const div = document.createElement('div'); // delete if useless div.addEventListener('click', () => { btnB(array[0]) }); divList.appendChild(div); }

我假設[0]是您嘗試解決此問題的一部分,但基於要求將對象數組傳遞給單擊處理程序的問題,我將改為引用它。

無論如何,內聯事件處理程序已被棄用且有問題,但在JavaScript 生成的HTML 中使用它們以一種荒謬的方式完成了循環。 通過 JavaScript 附加點擊處理程序會更容易、更健壯(和安全),如下所示:

const array = [{ abc: 123 }, { def: 456 }]        
div.innerHTML = '<div></div>' // Just the inner div without onclick
div.firstElementChild.addEventListener('click', () => btnB(array))
divList.appendChild(div)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM