Не использовать в браузере
В браузере используйте document.querySelect('[attribute-name]')
.
Но если вы проводите модульное тестирование и у вашего смоделированного dom есть нестабильная реализация querySelector, это поможет.
Это ответ @kevinfahy, только что немного урезанный, чтобы быть немного с функциями жирных стрелок ES6 и путем преобразования HtmlCollection в массив, возможно, ценой удобочитаемости.
Так что он будет работать только с транспилером ES6. Кроме того, я не уверен, насколько он будет производительным с большим количеством элементов.
function getElementsWithAttribute(attribute) {
return [].slice.call(document.getElementsByTagName('*'))
.filter(elem => elem.getAttribute(attribute) !== null);
}
А вот вариант, который получит атрибут с определенным значением
function getElementsWithAttributeValue(attribute, value) {
return [].slice.call(document.getElementsByTagName('*'))
.filter(elem => elem.getAttribute(attribute) === value);
}