Chiff Shinz
Chiff Shinz

Reputation: 376

Use variable value as function name

I have the code below to perform operations on the classList of every DOM-Element in the given list.

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;
    }
}

and I want to change it to something like this:

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

If this is possible, how is it done?

Upvotes: 0

Views: 71

Answers (1)

Philipp
Philipp

Reputation: 69763

You can access fields of an object with brackets.

element.classList.add is equivalent to element.classList["add"]. So you can just do element.classList[operation](className) and it will call the function of classList named like the value of variable operation.

Upvotes: 3

Related Questions