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