Mutually exclusive expandable panels (needs to work in IE9 and above)
Overall, the code looks pretty good. Definitely much better than many other JS examples in CodeReview. A few minor points can be made though.

DRY - Don't repeat yourself

At the very minimum, you can reuse some code by encapsulating it into a function.

You can define setPanelVisibilityState which will be responsible for the details of showing/hiding a section. The decision on whether a button/panel should be visible or not remains in the control of the caller...

Variable naming

Similarly, I'm unsure if the selectors '.panels-button' and '.panels-content' more than in one place...

I personally am a big enemy of variables like i, j, c, and so on. It's not so difficult to spell it out: panelIndex.

IE is a beast

As far as IE page renderer goes, I can't provide much feedback because I don't deal with it.



function togglePanel() {
    const showContent = content.getAttribute('aria-hidden') === 'true';
    reset();
    setPanelVisibilityState(false, button, content);
}

function reset() {
    for (var panelIndex = 0; panelIndex &lt; panel.length; panelIndex++)
        setPanelVisibilityState(false, button[panelIndex], content[panelIndex]);
}

function setPanelVisibilityState(isVisible, button, content) {
    button.setAttribute('aria-expanded', isVisible);
    content.setAttribute('aria-hidden', !isVisible);
    content.className = isVisible ? 'panels-content' : 'panels-content js-hidden';
}