Я создаю страницу с видео в макете сетки. Это будет огромный проект, поэтому мне нужно получить доступ к держателю видео из классов. Я создал новые элементы управления, но я не могу скрыть исходные элементы управления html5. Это работает:
var player = document.getElementById('vid1');
player.removeAttribute('controls');
Это не так (также пытались применить класс и получить доступ к нему, но не повезло):
var player = document.getElementsByTagName('video');
player.removeAttribute('controls');
Как я могу легко получить доступ ко всем держателям видео и скрыть элементы управления?
Спасибо!
document.getElementsByTagName
возвращает объект типа, похожий на массив, с указанным именем тега на странице.
Этот подобный массиву объект не имеет метода removeAttribute
, это всего лишь контейнер, используемый для хранения элементов, возвращаемых вызовом document.getElementsByTagName
; Объекты DOM в подобном массиве методы removeAttribute
.
Вам придется выполнять итерацию по массиву и удалять атрибуты из каждого из них отдельно:
var players = document.getElementsByTagName('video');
for(var i = 0; i < players.length; i++) {
players[i].removeAttribute('controls');
}
// the "video" HTML elements now have no "controls" attribute.
console.log(players);
<video width="320" height="240" controls></video>
<video width="320" height="240" controls></video>
<video width="320" height="240" controls></video>
Если вы хотите сделать все это в 1 заявлении (я предпочитаю это, мы заимствуем Array#map
):
Array.prototype.map.call(document.getElementsByTagName("video"), function(el){
el.removeAttribute("controls");
});
<video width="320" height="240" controls></video>
<video width="320" height="240" controls></video>
<video width="320" height="240" controls></video>