代码之家  ›  专栏  ›  技术社区  ›  Imnotapotato

如何保存字符串,然后使用is作为变量名?[副本]

  •  0
  • Imnotapotato  · 技术社区  · 6 年前

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

    我正在“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);    
        }
    
    2 回复  |  直到 6 年前
        1
  •  3
  •   smtaha512    6 年前

    尝试使用 this[name] . 在JavaScript中,属性访问器可以使用点表示法和括号表示法。您可以查看Mozilla开发者网络的文档 MDN 有关详细信息。

        2
  •  1
  •   I wrestled a bear once.    6 年前

    这里有一个例子来详细说明前面的答案。

    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>