0

我正在尝试保存一个字符串变量,然后将此变量用作其他变量。

我在“名称”变量中保存了一个字符串,可以是“每周”、“每月”或“每季度”。

然后使用 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);    
    }
4

2 回答 2

3

尝试使用this[name]. 在 JavaScript 中,属性访问器可以使用点表示法和方括号表示法。您可以查看来自 Mozilla Developer Network MDN的文档以了解详细信息。

于 2018-01-18T14:54:29.380 回答
1

这是一个详细说明先前答案的示例。

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>

于 2018-01-18T15:07:26.170 回答