动态调整div宽度

时间:2016-03-13 21:59:55

标签: javascript html html5 dynamic resize

我正在尝试创建自定义HTML5视频滑块(看起来像带有红线的youtube)。它由两个div组成,一个在另一个上面,红色div的宽度需要根据当前视频位置而改变。

我成功捕获了视频位置,但无法更改红色div的宽度。我做错了什么?

HTML:

<video id="VideoWindow" src="../html/media/homepage.mp4" ontimeupdate="VideoTimeUpdated()"/>
<div id="PlaybackIndicatorProgress" style="left: 0%; width: 30%; display: block; background-color: red; height: 3px">

JS:

function VideoTimeUpdated() {
    var myVideo = document.getElementById("VideoWindow");
    var myVideoSlider = document.getElementById("PlaybackIndicatorProgress");
    var CurrentPosition;

    CurrentPosition = Math.round(parseInt(myVideo.currentTime / myVideo.duration * 100));
    CurrentPosition = CurrentPosition + '%'; 
    myVideoSlider.css("width", "CurrentPosition");
}

谢谢!

杰尼。

2 个答案:

答案 0 :(得分:1)

对我来说,看起来你正在混合使用jQuery和普通的javascript,在你的代码中尝试第8行:

myVideoSlider.style.width = CurrentPosition;

说明:.css()方法是一个jQuery方法,但是您通过本机getElementById()方法获取DOM节点(要更改的元素),因此不能使用.css()。

Dimitar也部分正确,因为您想使用变量而不能将其设置为引号,否则它将被解释为字符串。

对于第6行到第8行,我可以说你正在投射(改变)很多“数据类型”并使用不真正需要的舍入,如果你使用宽度的百分比,你可以实际使用浮点数。 通过将第6,7和8行合并在一起,您可以同时保存两行代码:

myVideoSlider.style.width = (myVideo.currentTime / myVideo.duration * 100) + "%";

请注意,我将计算放入制动器以将它们与连接(+符号)分开,否则可能不清楚您是否阅读了此处发生的代码,因为在javascript中加号用于计算和连接字符串取决于您使用的“数据类型”。

答案 1 :(得分:0)

CurrentPosition需要在&#34;&#34;之外,因为你的方式&#34; CurrentPosition&#34;只是一个字符串,而不是一个变量。

应为myVideoSlider.css("width", CurrentPosition);