你的問題有一個錯誤。它指的是:
document.getElemtsByClassName(...)
這應該是:
document.getElementsByClassName(...)
假設僅僅是在你的問題一個錯字(因爲你不報告,將導致錯誤),則:
這行代碼得到的HTMLCollection,而不是一個單獨的DOM元素:
var video = panels[i].getElementsByClassName("player");
所以,你不能這樣做:
video.pause();
因爲video
在上面的代碼行的HTMLCollection,而不是一個DOM元素的HTMLCollection沒有.pause()
方法。爲了充分利用的HTMLCollection DOM元素,你必須深入到它的性能指標得到一個單獨的DOM元素:
video[0].pause();
或者,您可以遍歷整個的HTMLCollection就在所有的DOM元素進行操作HTML集合。這將是獲得第1選手對象在每個DIV(見[0]
):
var panels = document.getElementsByClassName("panel");
for (i = 0; i < panels.length; i++) {
var video = panels[i].getElementsByClassName("player")[0];
video.pause();
}
或者,如果你使用這種技術希望所有的球員對象,你需要使用兩個for
循環:
var panels = document.getElementsByClassName("panel");
for (var i = 0; i < panels.length; i++) {
var videos = panels[i].getElementsByClassName("player");
for (var j = 0; j < videos.length; j++) {
videos[j].pause();
}
}
你也可能只是想用document.querySelectorAll()
,做這一切在一個查詢和一個迭代:
var videos = document.querySelectorAll(".panel .player");
for (var i = 0; i < videos.length; i++) {
videos[i].pause();
}
此外,鑑於你的HTML,它不是Ë完全清楚你爲什麼首先查詢.panel
元素。如果你有,你想避免沒有其他.player
對象,你可以得到玩家的物品直接在一個簡單的查詢:
var videos = document.querySelectorAll(".player");
for (var i = 0; i < videos.length; i++) {
videos[i].pause();
}
而且,雖然你並沒有問使用jQuery,它通常用於DOM查詢,迭代和操作:
$(".panel .player").each(function() {
this.pause();
});
看起來很奇怪,你不只是直接引用播放器,因爲它會更快。 – epascarello
你在你的代碼中有拼寫錯誤,你能發佈實際的代碼嗎? – epascarello
沒有'getElementByClassName',只有'getElementsByClassName' – Bergi