假设你的 obj 对象长这样(其他的不管):

var obj = {
data: [{
scheduleId: 1,
status: "Confirmed"
}]
};

假设你的 Button 字符串长这样

var html = "<button onclick='updateScheduleStatus(" + obj.data[0].scheduleId + ", " + obj.data[0].status + ")'></button>";

他的拼接结果如下

<button onclick='updateScheduleStatus(1, Confirmed)'></button>

显然,updateScheduleStatus() 的第二个参数将会变成一个名叫 Confirmed 的变量。且这个变量是不存在的。
我们实际要的输出结果是:

<button onclick='updateScheduleStatus(1, "Confirmed")'></button>

这样 Confirmed 才会是字符串,而非变量

解决方案:这里我们用了键盘数字 1 左侧(esc 键下方)的 ` 号作为整个字符串的开关号(也称作 JavaScript 模板字符串),然后把我们需要输出的变量用 ${} 包含起来

var html = `<button onclick='updateScheduleStatus(${obj.data[0].scheduleId}, "${obj.data[0].status}")'></button>`

注意,我们的 status 那边的前后放了 "" 这样,就会变成字符串了。

拼接结果结果如下:

<button onclick='updateScheduleStatus(1, "Confirmed")'></button>

完美解决

PS: 你的单双引号需要注意位置哈(onclick 之后用的是单引号,所以后面的字符串就要用双引号。反之亦然)