我如何保存一个字符串,然后将它用作变量名?
How do i save a string and then use is as a variable name?
我正在尝试保存一个字符串变量,然后将此变量用作另一个变量。
我正在 "name" 变量中保存一个字符串,它可以是 "weekly"、"monthly" 或 "quarterly"。
然后使用 is 作为 "this.weekly" 但使用 "name" 引用。只是为了不通过每个案例的 "swtich"。
这是我的代码:
// Update "report" variable onclick checkbox
checkboxSaveOnChange: function(newCheckbox){
var name = newCheckbox.checked;
if (newCheckbox.checked) {
this.name.push(newCheckbox.value);
} else {
var index = this.name.indexOf('newCheckbox.value');
this.name.splice(index, 1);
}
/*switch (name) {
case 'weekly':
break;
case 'monthly':
break;
case 'quarterly':
break;
}*/
console.log(this.weekly);
console.log(this.monthly);
console.log(this.quarterly);
},
尝试使用 var name = 'this.+'newCheckbox.checked;
- 不起作用...
编辑:
这仍然导致错误:
// (newCheckbox.checked) ? this.name.push(newCheckbox.value) : this.name.indexOf('newCheckbox.value');
if (newCheckbox.checked) {
this[name].push(newCheckbox.value);
} else {
var index = this[name].indexOf('newCheckbox.value');
this[name].splice(index, 1);
}
尝试使用 this[name]
。在 JavaScript 属性 中,访问器可以使用点符号和括号符号。您可以查看来自 Mozilla Developer Network MDN 的文档了解详细信息。
这里有一个例子来详细说明之前的答案。
var thingy = {
weekly: false,
monthly: false,
quarterly: false,
checkboxSaveOnChange: function(newCheckbox) {
var value = newCheckbox.value,
checked = newCheckbox.checked;
this[value] = checked;
}
};
document.getElementsByTagName("button")[0].onclick = function(){
var cbs = document.querySelectorAll("input[type='checkbox']");
for(var i=0; i<cbs.length; i++) thingy.checkboxSaveOnChange(cbs[i]);
console.log(thingy);
};
<label><input type=checkbox value=weekly />weekly</label>
<label><input type=checkbox value=monthly />monthly</label>
<label><input type=checkbox value=quarterly />quarterly</label>
<button>do a thing</button>
我正在尝试保存一个字符串变量,然后将此变量用作另一个变量。
我正在 "name" 变量中保存一个字符串,它可以是 "weekly"、"monthly" 或 "quarterly"。
然后使用 is 作为 "this.weekly" 但使用 "name" 引用。只是为了不通过每个案例的 "swtich"。
这是我的代码:
// Update "report" variable onclick checkbox
checkboxSaveOnChange: function(newCheckbox){
var name = newCheckbox.checked;
if (newCheckbox.checked) {
this.name.push(newCheckbox.value);
} else {
var index = this.name.indexOf('newCheckbox.value');
this.name.splice(index, 1);
}
/*switch (name) {
case 'weekly':
break;
case 'monthly':
break;
case 'quarterly':
break;
}*/
console.log(this.weekly);
console.log(this.monthly);
console.log(this.quarterly);
},
尝试使用 var name = 'this.+'newCheckbox.checked;
- 不起作用...
编辑:
这仍然导致错误:
// (newCheckbox.checked) ? this.name.push(newCheckbox.value) : this.name.indexOf('newCheckbox.value');
if (newCheckbox.checked) {
this[name].push(newCheckbox.value);
} else {
var index = this[name].indexOf('newCheckbox.value');
this[name].splice(index, 1);
}
尝试使用 this[name]
。在 JavaScript 属性 中,访问器可以使用点符号和括号符号。您可以查看来自 Mozilla Developer Network MDN 的文档了解详细信息。
这里有一个例子来详细说明之前的答案。
var thingy = {
weekly: false,
monthly: false,
quarterly: false,
checkboxSaveOnChange: function(newCheckbox) {
var value = newCheckbox.value,
checked = newCheckbox.checked;
this[value] = checked;
}
};
document.getElementsByTagName("button")[0].onclick = function(){
var cbs = document.querySelectorAll("input[type='checkbox']");
for(var i=0; i<cbs.length; i++) thingy.checkboxSaveOnChange(cbs[i]);
console.log(thingy);
};
<label><input type=checkbox value=weekly />weekly</label>
<label><input type=checkbox value=monthly />monthly</label>
<label><input type=checkbox value=quarterly />quarterly</label>
<button>do a thing</button>