代码之家  ›  专栏  ›  技术社区  ›  Glyn

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

  •  2
  • Glyn  · 技术社区  · 7 年前

    我正在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)
    

    变量 阿特纽克姆 不包含值 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 回复  |  直到 7 年前
        1
  •  1
  •   ChandraShekar    7 年前

    使用如下

     contents = contents +'<input type="text" id="'+obj.cdId+'" name="'+obj.cdId+'" value="'+attMeeting+'" onchange="attendanceUpdateFunction(this.id, this.value, \''+obj.attNewChum+'\'")">';
    
        2
  •  1
  •   CertainPerformance    7 年前

    最好的选择是使用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对象而不是字符串,因此,您希望 .append 新元素。

    如果,碰巧,你只是在使用 id 试图通过 obj.cdId attendanceUpdateFunction ,您可以考虑删除 身份证件 完全并且只使用简单的引用 cdId :

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