如何保存字符串然后使用is作为变量名?

时间:2018-01-18 14:50:39

标签: javascript jquery modularity modular-design

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

我正在"名称"中保存一个字符串。变量可以是"每周","每月"或者"每季度#34;

然后使用就像" this.weekly"但使用"名称"参考。只是因为没有通过" 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);    
    }

2 个答案:

答案 0 :(得分:3)

尝试使用input.schema.containsField("my_field")。在JavaScript中,属性访问器可以使用点表示法和括号表示法。您可以从Mozilla Developer Network MDN查看文档以获取详细信息。

答案 1 :(得分:1)

这是一个详细说明上一个答案的例子。

wsSource.Range("B" & i & ":" & "C" & i).Copy 'Copy cells Bi and Ci
wsReceiver.Range("A" & j & ":" & "B" & j).PasteSpecial xlPasteValues
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);
};