2 回答

TA貢獻(xiàn)1835條經(jīng)驗(yàn) 獲得超7個(gè)贊
在您的代碼中,單引號(hào)表示屬性邊界:
onclick='appr(
^
所以后面的第一個(gè)'將完成屬性值。
您可以通過(guò)將's 替換為導(dǎo)致引號(hào)的 HTML 實(shí)體來(lái)修復(fù)它,以便生成的 HTML 出現(xiàn)在
<button type='button' onclick='appr(3,"Dave O"Shea");'>Approve</button>
<button onclick='alert("foo")'>Test</button>
但是最好完全避免內(nèi)聯(lián)處理程序并使用 Javascript 添加偵聽器。例如,對(duì)于每個(gè)按鈕,將包含關(guān)聯(lián)的id和的對(duì)象推name送到一個(gè)數(shù)組,并以某種方式將該數(shù)組包含在對(duì)客戶端的響應(yīng)中 - 例如,通過(guò)將 JSON 放入腳本標(biāo)簽并選擇/解析該腳本標(biāo)簽內(nèi)容。然后遍歷數(shù)組并為每個(gè)按鈕添加一個(gè)監(jiān)聽器。就像是:
// retrieve array however you want
const arr = [
{ id: 3, name: "Dave O'Shea" },
// more objects
];
const buttons = document.querySelectorAll('button');
for (const [i, { id, name }] of arr.entries()) {
button[i].addEventListener('click', () => {
appr(id, name);
});
}
或任何其他類似的東西。只需避免將處理程序作為元素屬性放入 HTML 標(biāo)記中。

TA貢獻(xiàn)1868條經(jīng)驗(yàn) 獲得超4個(gè)贊
最好的解決方案是對(duì)屬性中的動(dòng)態(tài)數(shù)據(jù)使用模板文字和轉(zhuǎn)義函數(shù)。像下面的例子
let str = escape("Dave O'Shea")
return `<a href="javascript:void(0);" onclick="myFunc(str)"></a>`
然后在函數(shù)中對(duì)字符串進(jìn)行轉(zhuǎn)義
function myFunc(str){
str = unescape(str)
}
- 2 回答
- 0 關(guān)注
- 203 瀏覽
添加回答
舉報(bào)