2016-09-12 13 views
0

以下のコードを使用して、指定されたリスト内のすべてのDOM要素のclassListに対する操作を実行します。変数名を関数名として使用

function editClassListOfElements(elements, className, operation) { 
    switch (operation) { 
     case "add": 
      [].forEach.call(elements, function (element) {element.classList.add(className)}); 
      break; 
     case "remove": 
      [].forEach.call(elements, function (element) {element.classList.remove(className)}); 
      break; 
     case "toggle": 
      [].forEach.call(elements, function (element) {element.classList.toggle(className)}); 
      break; 
     default: 
      break; 
    } 
} 

、私はこのような何かにそれを変更したい:これが可能である場合

function editClassListOfElements(elements, className, operation) { 
    [].forEach.call(elements, function (element) {element.classList. + operation + (className)}); 
} 

、それはどのように行われていますか?

+0

[JavaScriptオブジェクトリテラルのキーに変数を使用する]の可能な複製(http://stackoverflow.com/questions/2274242/using-a-variable-for-a-key-in-a-javascript-オブジェクトリテラル) – Teemu

答えて

3

ブラケットを使用してオブジェクトのフィールドにアクセスできます。

element.classList.addは、element.classList["add"]に相当します。したがって、element.classList[operation](className)を実行するだけで、operationの値のような名前のclassListという関数が呼び出されます。

関連する問題