Jquery onchange () - как поставить переменную в кавычки?

Я создаю строку HTML в jQuery для добавления к таблице в 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
console.info(obj); может дать вам представление о том, что происходит на самом деле. (Также следует добавить к вашему вопросу, чтобы знать, о чем мы говорим.)
Quasimodo's clone 11.01.2019 05:10

преобразовать двойные кавычки в одинарные и одинарные в двойные

PHP Geek 11.01.2019 05:34
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
2
331
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Лучшей альтернативой было бы правильно подключить слушателя, используя вместо этого 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+'\'")">';

Небольшая поправка в конце: contents = contents + '<input type = "text" id = "' + obj.cdId + '" name = "' + obj.cdId + '" value = "' + attMeeting + '" onchange = " посещаемостьUpdateFunction (this.id, this.value, \ '' + obj.attNewChum + '\') "> '; Спасибо :-)

Glyn 11.01.2019 09:49

Другие вопросы по теме