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

时间:2019-01-11 04:00:22

标签: javascript jquery html onchange

我正在jQuery中构建HTML行以附加到HTML中的表,并想在输入值更改时捕获。我正尝试在obj.attNewChum修饰符中传递变量onchange,如下所示:

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

2 个答案:

答案 0 :(得分:1)

最好的选择是使用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);
});

答案 1 :(得分:1)

用法如下

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