Как передать строку в строке

Я создаю строку таблицы со ссылкой, как показано ниже:

"<td>"+table.rows[i].c[0].v+"<a href='#' onclick='loadForm("+table.rows[i].c[2].v+")'>&nbsp;&nbsp;My Link</a></td>" +

table.rows[i].c[2].v = 'my stuff'.

Однако при осмотре он генерировался как

<a href = "#" onclick = "loadForm(my stuff)">&nbsp;&nbsp;My Link</a>

Что не работает, так как «мой материал» не заключен в кавычки, чтобы сделать его строкой. Как мне сделать мои вещи строкой в ​​этой ситуации?

Спасибо!

Кавычки не являются частью строкового значения, они являются разделителями для синтаксического анализатора, чтобы узнать, начинается ли строковое значение и где оно заканчивается.

Felix Kling 03.05.2018 23:33

Вы должны делать это как струны? Все намного проще, если вы создаете элементы как объекты, а затем используете element.addEventListener() для добавления обработчика кликов.

Barmar 03.05.2018 23:55
Поведение ключевого слова "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) для оценки ваших знаний,...
0
2
99
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Краткий ответ: заключите аргумент в кавычки, используя обратную косую черту \:

"<td>"+table.rows[i].c[0].v+"<a href='#' onclick='loadForm(\""+table.rows[i].c[2].v+"\")'>&nbsp;&nbsp;My Link</a></td>" +

Длинный ответ: не создавайте HTML-элементы со строками, это неэффективно и плохо обслуживается. Вместо этого используйте стандартные функции DOM:

var td = document.createElement('td');
var a = document.createElement('a');
a.href = '#';
a.onclick = function() { loadForm(table.rows[i].c[2].v); }
a.textContent = '  My Link';
td.appendChild(a);

... а затем вы можете использовать appendChild(), чтобы добавить свой td в строку, которой он принадлежит. Я знаю, что он длиннее и выглядит сложнее, но много легче отлаживать и поддерживать. Существуют также библиотеки, такие как jQuery, которые помогают сделать это быстрее и проще. Я определенно предлагаю потратить время и силы, чтобы прочитать об этом. Погуглите "HTML DOM" и поищите учебники, в MDN обычно есть довольно хорошие материалы.

Думаю, здесь подойдет Шаблонный литерал:

`<td> ${table.rows[i].c[0].v}<a href='#' onclick='loadForm("${table.rows[i].c[2].v}")'>&nbsp;&nbsp;My Link</a></td>`

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