在我的php while循环中,我输出一个id为divborder的div和class div-border 在div里面我有另一个id为id的div
<div id='divborder' class='div-border'>
<div id='Title'>This is Title</div> <br/> video elements
</div>
我有一个在视频结束时调用的JavaScript函数
for (var i = 0; i < videos.length; i++) {
videos[i].addEventListener("ended", function(event)
{
var divBoader2 = document.getElementsByClassName("divborder")[3];
divBoader2.style.borderColor = "#b1ff99";
}
我的问题是如何更改div的边框颜色和第二个div的标题?
我可以这样做:
var divBoader2 = document.getElementsByClassName("divborder")[3];
divBoader2.style.borderColor = "#b1ff99";
哪个有效,但不是动态的
答案 0 :(得分:0)
试试这个,
提供班级名称div-border
而非divborder
for (var i = 0; i < videos.length; i++) {
videos[i].addEventListener("ended", function(event)
{
var divBoader2 = document.getElementsByClassName("div-border")[3];
divBoader2.style.borderColor = "#b1ff99";
}
答案 1 :(得分:0)
将i
处的值保存在使用let
for (var i = 0; i < videos.length; i++) {
let index = i; //save the value as let so that its binding stays
videos[i].addEventListener("ended", function(event)
{
var divBoader = document.querySelectorAll("div-border")[index];
divBoader.style.borderColor = "#b1ff99";
}
}
如果视频元素位于div-border
范围内,请使用closest
for (var i = 0; i < videos.length; i++) {
videos[i].addEventListener("ended", function(event)
{
var divBoader = event.currentTarget.closest(".div-border");
divBoader.style.borderColor = "#b1ff99";
}
}
稍微冗长的代码
[...videos].forEach( s => s.closest( ".div-border" ).style.color = "#b1ff99" )
答案 2 :(得分:0)
您需要的可能是videos[i].parentNode
而不是document.getElementsByClassName("div-border")[3]
(请参阅https://developer.mozilla.org/en-US/docs/Web/API/Node/parentNode)