我正在使用播放列表构建视频播放器,并使用符号“>”指示当前正在播放哪个视频。我具有以下功能:
player.onended = function () {
pl.childNodes[curVideo + 1].childNodes[0].innerHTML = pl.childNodes[curVideo + 1].childNodes[0].innerHTML.slice(1);
++curVideo;
if (playlist.length == 0) {
player.setAttribute("src", "");
}
else if (curVideo < playlist.length) {
player.setAttribute("src", playlist[curVideo]);
pl.childNodes[curVideo + 1].childNodes[0].innerHTML = ">" + pl.childNodes[curVideo + 1].childNodes[0].innerHTML;
} else {
curVideo = 0;
player.setAttribute("src", playlist[curVideo]);
pl.childNodes[curVideo + 1].childNodes[0].innerHTML = ">" + pl.childNodes[curVideo + 1].childNodes[0].innerHTML;
}
}
我没有在代码中的其他任何地方更改此字符串,但是当我用slice或substring删除此“>”而不是获取没有它的字符串时,我会将此符号替换为“ gt;”。
删除前:
>htt://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerFun.mp4
删除后:
gt;htt://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerFun.mp4
答案 0 :(得分:1)
您假设>
将以>
的身份返回您。它不在您的示例中,而是以named character reference >
的形式返回给您。请记住,innerHTML
是HTML。在大多数情况下,>
不一定要使用命名字符实体,但这并不罕见。
这可能不是可靠的跨浏览器,因此要删除它,如果您需要使用innerHTML
,我可能会这样做:
l.childNodes[curVideo + 1].childNodes[0].innerHTML =
pl.childNodes[curVideo + 1].childNodes[0].innerHTML.replace(/^(?:>|\>)/, "");
// ----------------------------------------------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...无论将其以>
还是>
的形式返回,它将在字符串的开头将其删除。
或者,使用innerText
或textContent
,这样就不必处理HTML。
答案 1 :(得分:0)
使用innerText属性而不是innerHTML修复