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+'\'")">';
我正在 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+'\'")">';