jquery onchange() - 如何将变量放在引号中?

jquery onchange() - how to put a variable in quotes?

我正在 jQuery 中构建一个 HTML 行以附加到 HTML 中的 table 并希望在输入值更改时进行捕获。我正在尝试在 onchange 属性中传递变量 obj.attNewChum,如下所示:

contents = contents + "<input type='text' id='" + obj.cdId + "' name='" + obj.cdId + "' value='" + attMeeting + "' onchange='attendanceUpdateFunction(this.id, this.value, "+obj.attNewChum+")'>";

但是,这会在控制台中出现以下错误:

Uncaught ReferenceError: N is not defined
    at HTMLInputElement.onchange (Attendance.html:1)

attendanceUpdateFunction(this.id, this.value, N)

变量 obj.attNewChum 确实包含值 N

我试过将变量放在引号中:

contents = contents + "<input type='text' id='" + obj.cdId + "' name='" + obj.cdId + "' value='" + attMeeting + "' onchange='attendanceUpdateFunction(this.id, this.value, "+"\"'obj.attNewChum'\""+")'>";

这会在控制台中出现以下错误:

Uncaught SyntaxError: Invalid or unexpected token

最好的替代方法是使用 Javascript 正确附加监听器,而不是使用内联处理程序,这样您就不必处理任何转义问题:

const input = $("<input>")
  .prop({
    id: obj.cdId,
    name:  obj.cdId,
    value: attMeeting
  });
input.on('change', function() {
  attendanceUpdateFunction(this.id, this.value, obj.attNewChum);
});

请注意,这会导致 input 成为 jQuery 对象而不是字符串,因此与其连接新的 HTML,不如 .append新元素。

如果碰巧您只是使用 id 来尝试将 obj.cdId 传递给 attendanceUpdateFunction,您可以考虑完全删除 id 并且只需使用对 cdId:

的简单引用
const input = $("<input>")
  .prop({
    name:  obj.cdId,
    value: attMeeting
  });
input.on('change', () => {
  attendanceUpdateFunction(obj.cdId, input.val(), obj.attNewChum);
});

使用如下

 contents = contents +'<input type="text" id="'+obj.cdId+'" name="'+obj.cdId+'" value="'+attMeeting+'" onchange="attendanceUpdateFunction(this.id, this.value, \''+obj.attNewChum+'\'")">';