JavaScript не может вставить значение переменной

Я пытаюсь вставить значение переменной newData123 в атрибут test.

Но он вставляет имя переменной newData123 вместо ее значения 456...

Что я делаю не так?

Отредактировано

Причина, по которой я не использую elm.setAttribute('test', 'newData123'); напрямую, заключается в том, что мне нужно извлечь данные динамично из другого скрипта, как показано ниже:

const newData123 = '456',
   newData456 = '789';

И именно поэтому мне нужно использовать литерал шаблона здесь в виде программный вместо жесткого кода.

const elm = document.querySelector('.test'),
  data = '123',
  newData123 = '456';
  
elm.setAttribute('test', `newData${data}`);

const check = elm.getAttribute('test');

console.log(check);
<p class="test"></p>

Попробуйте var newData123 = '456'; elm.setAttribute('test', window[`newData${data}`]);

User863 23.04.2022 07:28

@ User863 Он возвращает undefined...

nakar20966 23.04.2022 07:38

Взгляните еще раз. Я использовал var newData123

User863 23.04.2022 07:40

@ User863 Да, это работает! Но какая за этим логика? Почему const не работает, а var работает? А что делает window? Пожалуйста, объясните... Я пытаюсь научиться

nakar20966 23.04.2022 07:43
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Сравнение структур данных: Массивы и объекты в Javascript
Сравнение структур данных: Массивы и объекты в Javascript
Итак, вы изучили основы JavaScript и хотите перейти к изучению структур данных. Мотивация для изучения/понимания Структур данных может быть разной,...
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Прошлая статья была первой из цикла статей о создании системы электронной коммерции с использованием Keystone.js, и она была посвящена главным образом...
Приложение для отслеживания бюджета на React js для начинающих
Приложение для отслеживания бюджета на React js для начинающих
Обучение на практике - это проверенная тема для достижения успеха в любой области. Если вы знаете контекст фразы "Практика делает человека...
Стоит ли использовать React в 2022 году?
Стоит ли использовать React в 2022 году?
В 2022 году мы все слышим о трендах фронтенда (React, Vue), но мы не знаем, почему мы должны использовать эти фреймворки, когда их использовать, а...
0
4
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Было бы намного безопаснее, если бы вы отформатировали все свои переменные newData в какой-то объект.

const data_obj = {
  newData123: '456',
  newData456: '123'
}
const data = '123'
console.log(data_obj[`newData${data}`]) // 456

const data2 = '456'
console.log(data_obj[`newData${data2}`]) // 123

Поскольку JS немного нечеткий с типами данных, вы могли бы даже сделать что-то подобное, что потребовало бы минимального рефакторинга:

const newData = {
  123: '456',
  456: '123'
}
let data = '123'
console.log(newData[data]) // 456

data = '456'
console.log(newData[data]) // 123
  
console.log(newData[123]) // 456

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