使用<选择>标记不起作用
Video selection using <select> tag does not work
我正在为我的视频播放实现视频选择功能,这样人们就可以选择他们想看的视频。我当前的代码是这样的:
html:
<video id="media" width="600" height="400" preload="none">
<source id="myvideos" src="files/Best of 60s.m4v"> </source>
</video>
<select id="videos">
<option value="PleaseSelect" selected="selected">Please Select...</option>
<option value="files/Best of 60s.m4v">Best of 60s</option>
<option value="files/Black and White Gems.m4v">Black and White Gems</option>
</select>
Javascript:
var selectmenu, mmedia;
selectmenu=document.getElementById('videos');
mmedia = document.getElementById('media');
selectmenu.addEventListener('onchange', loadvid);
function loadvid(){
selectmenu.onchange=function(){
var chosenoption=this.options[this.selectedIndex];
if (chosenoption.value != "PleaseSelect"){
mmedia.src = chosenoption.value;
}
mmedia.load();
}
}
当我运行这段代码时,除了我在src元素中所说的之外,我在选择菜单中选择的内容和播放的内容之间不会创建任何"链接"。
我以以下心态实现了这一点:
将onchange事件附加到select元素,以便函数loadvid()仅在菜单中发生更改时才会启动。
loadvid函数通过定义所选索引的值并将其传递给mmedia来管理视频的选择;其是视频元素并且具有src属性。
一旦做出选择,视频就应该加载(mmedia.load())。
我显然在某个地方出了问题,如果你能提供任何指导,我将不胜感激。
非常感谢。
您的javascript有一个需要"change"的"onchange";此外,以下注释了无关功能:
var selectmenu, mmedia;
selectmenu = document.getElementById('videos');
mmedia = document.getElementById('media');
selectmenu.addEventListener('change', loadvid);
function loadvid() {
//selectmenu.onchange=function(){
var chosenoption = this.options[this.selectedIndex];
if (chosenoption.value != "PleaseSelect") {
alert(chosenoption.value);
mmedia.src = chosenoption.value;
}
mmedia.load();
// }
}
您将遇到的另一个问题是在<video>
标签中使用<source>
;如果您只在视频标签中使用src=
属性:,您可能会遇到较少的麻烦
<video name="media" id="media" width="600" height="400" preload="none" src="files/Best of 60s.m4v"></video>
你走在了正确的轨道上,然而,有一个"打字错误"阻止了你的代码工作:
在addEventListener
调用中,您告诉它侦听onchange
,这不是实际事件。MDN有一个方便的事件列表。您将需要使用change
事件。
当您像<select onchange="loadvid()">
那样直接将侦听器添加为HTML属性时,将使用on
前缀。
旁注:由于您已经在此处附加了一个事件侦听器:
selectmenu.addEventListener('change', loadvid);
你不需要在这里再做一次:
function loadvid(){
selectmenu.onchange=function(){
照顾好这2个,你就会得到这个工作代码:
var selectmenu, mmedia;
selectmenu = document.getElementById('videos');
mmedia = document.getElementById('media');
selectmenu.addEventListener('change', loadvid);
function loadvid(){
var chosenoption=this.options[this.selectedIndex];
console.log(chosenoption);
if (chosenoption.value != "PleaseSelect"){
mmedia.src = chosenoption.value;
}
mmedia.load();
}
相关文章:
- 为什么 .focus() 不起作用,而 .css(“color”,“red”) 在同一个选择器上起作用
- 角度ng变化或ng点击选择can'不起作用
- <选择>标签不起作用
- 初始化ng模型时,Angular ui选择占位符不起作用
- 动态填充Bootstrap选择选择器:change event dos'不起作用
- Highcharts:树映射选择状态不起作用
- 单击选项卡时jquery选项卡选择不起作用
- jQuery日期选择器在Codeigniter和Bootsrap模式表单中不起作用
- JQuery日期选择器在IE 7上不起作用
- jQuery选择ajax调用中附加的元素不起作用
- 引导程序选择在jquery pep中不起作用
- 当我动态创建元素时,选择的插件不起作用
- 指令中选择输入的双向绑定不起作用
- 棱角分明的日期选择器;在ngDialog中不起作用
- Jquery悬停选择不起作用
- 选择选项淘汰赛事件不起作用
- ng-单击在IE中不起作用的选项选择Angularjs
- jQuery选择器在脚本中不起作用,但在控制台中工作
- 循环遍历类名索引不起作用..选择
- .trigger(' selected:updated')不起作用.选择v1.6.1