我正在嘗試將變數的值插入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>
uj5u.com熱心網友回復:
如果將所有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
uj5u.com熱心網友回復:
實際的問題是,因為您擁有newData${data}它將連接兩個字串,最終輸出將是
newData123.
要解決此問題,您可以eval()在此處使用函式,但這不是最安全的選擇。
解決方案:
const elm = document.querySelector('.test'),
data = '123',
newData123 = '456';
elm.setAttribute('test', eval(`newData${data}`));
const check = elm.getAttribute('test');
console.log(check);
<p class="test"></p>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/462180.html
標籤:javascript
