有一个变量让我们说var content
包含一些HTML内容,这个HTML也包含一个JavaScript变量,比如说${id}
。现在我想更新${id}
变量的值。我尝试使用以下代码,但它不起作用。
var id = '';
var content = `<div class="row well margin_btm_ten">
<div class="col-md-1">
<b>ID is ${id}</b>
</div>`;
row_id = 2;
setTimeout(function(){
console.log(content)
});
答案 0 :(得分:2)
你可以让内容成为一个返回html内容的函数,这样它就会在每次调用时计算出来。这样,如果id变量发生变化,content()返回的值也会改变:
var id = 'one';
var content = () => `<div class="row well margin_btm_ten">
<div class="col-md-1">
<b>ID is ${id}</b>
</div>`;
console.log(content());
id = 'two';
console.log(content());
答案 1 :(得分:0)
由于使用变量id
的当前值创建了对“内容”的引用,因此无法实现。 JavaScript变量基本上是用于存储数据值的容器。您需要“重新运行”content
变量,才能获得新的id
。但我认为你应该使用函数而不是覆盖变量。
const printName = (name => console.log(`Hello ${name}`));
let name = "Mark";
printName(name);
name = "Peter";
printName(name);
答案 2 :(得分:0)
您可以使用 id
属性的自定义设置器为id
设置一个功能,每次设置新content
时,id
都会更新function id() {
var id;
Object.defineProperty(this, 'id', {
get() {
return id;
},
set(value) {
id = value;
content = `<div class="row well margin_btm_ten">
<div class="col-md-1">
<b>ID is ${id}</b>
</div>`;
},
enumerable: true,
configurable: true
});
};
var obj = new id();
var content = `<div class="row well margin_btm_ten">
<div class="col-md-1">
<b>ID is ${obj.id}</b>
</div>`;
console.log(content) // id: undefined
app.innerHTML += content
obj.id = 2;
console.log(content) // id: 2
app.innerHTML += content
obj.id = 'Hello World!';
console.log(content) // id: 'Hello World'
app.innerHTML += content
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/set
<div id="app"></div>
forEach