【问题标题】:jquery onchange() - how to put a variable in quotes? [duplicate]jquery onchange() - 如何将变量放在引号中? [复制]
【发布时间】:2019-01-11 04:00:21
【问题描述】:

我正在 jQuery 中构建一个 HTML 行,以附加到 HTML 中的表格,并希望在输入值发生变化时捕获。我正在尝试在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

【问题讨论】:

  • console.log(obj); 可以让您了解实际发生的情况。 (也应该添加到您的问题中,以便了解我们在说什么。)
  • 双引号转单引号,单引号转双引号

标签: javascript jquery html onchange


【解决方案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);
});

【讨论】:

    【解决方案2】:

    如下使用

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

    【讨论】:

    • 最后的小修正:contents = contents +'';谢谢:-)
    猜你喜欢
    • 2020-02-14
    • 1970-01-01
    • 2012-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    相关资源
    最近更新 更多