我在JavaScript逻辑中执行了大量的HTML代码,我想知道是否有人可以指出我做错了什么?我想要实现的是基于概率运行视频。这是我的代码:


 < html>
< head>。< / head>
< body>& #xA;< script>
 function myFunction(){
 var chance =((Math.random()* 100)+1)
 if(偶然> = 0 ||机会< = 50){

 < video controls autoplay name =“media”>
 < source src =“http://webmup.com/195a3/vid.webm”type =“video / webm”>
 < /视频>

}
别的{

 < video controls autoplay name =“media”>
 < iframe width =“420”height =“315”
 < source src =“https://www.youtube.com/embed/IdtKbq3Omkw”type =“video / webm”>
 < / ifrmae>
 < /视频>

}
}
< /脚本>

< / BODY>
< / HTML> 
 代码>


答案 0 :(得分:4)
正如评论所说..那不是你应该怎么做..你可以试试这个,也许它会让你知道如何使用javascript与html结合:
import UIKit
class MyLabel: UILabel {
var delegate: MyProtocolForSwipeRecognition!
var gestureRecognizer: UISwipeGestureRecognizer
init() {
gestureRecognizer = UISwipeGestureRecognizer(target: delegate, action: "swiped")
super.init(frame: CGRect()) //<- I believe my problem is because it thinks
//the frame is this empty CGRect, but I don't know what else to put here.
translatesAutoresizingMaskIntoConstraints = false
addGestureRecognizer(gestureRecognizer)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
答案 1 :(得分:2)
<video>
等html标记应放在JavaScript函数之外且位于html的<body>
标记内。
首先,您要使用getElementById
查询视频元素。在这两种情况下,我们都在创建一个source
元素,因此我们可以在条件块之外声明它。
我们可以使用src
功能设置type
和setAttribute
等属性。然后,我们可以将源元素作为子元素添加到具有appendChild
函数的视频元素中。
<body>
<video id="my-video" controls autoplay name="media">
</video>
</body>
function myFunction() {
var video = document.getElementById("my-video");
var source = document.CreateElement("source");
source.setAttribute("type", "video/webm");
var chance = (( Math.random()*100)+1)
if (chance >= 0 || chance <= 50) {
source.setAttribute("src", "http://webmup.com/195a3/vid.webm");
video.appendChild(source);
} else {
var iframe = document.createElement("iframe");
iframe.setAttribute("width", "420");
iframe.setAttribute("height", "315");
video.appendChild("iframe");
source.setAttribute("src", "https://www.youtube.com/embed/IdtKbq30mkw");
iframe.appendChild(source");
}
}
答案 2 :(得分:1)
由于你没有用jQuery标记这个,我假设你不打算使用它。尽管如此,你仍然可以使用“模板”:
将每个模板放在脚本标记中,类型为“text / template”:
<script id="withIframe" type="text/template">
<p>With Iframe</p>
<video controls autoplay name="media">
<iframe width="420" height="315" <source src="https://www.youtube.com/embed/IdtKbq3Omkw" type="video/webm">
</iframe>
</video>
</script>
<script id="withoutIframe" type="text/template">
<p>Without Iframe</p>
<video controls autoplay name="media">
<source src="http://webmup.com/195a3/vid.webm" type="video/webm">
</video>
</script>
<div id="holder">
</div>
然后在你的javascript中根据你的逻辑加载正确的:
var iframe = document.getElementById("withIframe").innerHTML;
var noiframe = document.getElementById("withoutIframe").innerHTML;
function myFunction() {
var chance = ((Math.random() * 100) + 1);
var output = '';
if (chance <= 50) {
output = noiframe;
} else {
output = iframe;
}
document.getElementById("holder").innerHTML = output;
}
myFunction();
请注意,您的HTML中存在一些拼写错误,您的条件将始终返回true:
chance>= 0 || chance<=50
所有正数大于0 或小于50。
这是一个工作小提琴:https://jsfiddle.net/mcgraphix/5cr4j1r7/
对于可以传入数据以填充模板的更复杂的模板,您可能需要查看Mustache或Handlebars。
答案 3 :(得分:0)
你做不到。
但你可以使用模板。
两个w / wo jQuery
function jq(){ return $('#useJquery').prop('checked') }
function replace(){ return $('#replace').prop('checked') }
$(function(){ $('#button').click(function(){run();}) })
function run(){
if (jq()) {
if (replace()) {$("#container").html('');}
$("#container").append($((Math.round(Math.random()) ? $("#template1") : $("#template2")).html()));
} else {
if (replace()){document.getElementById("container").innerHTML = ''}
document.getElementById("container").innerHTML += document.getElementById( (Math.round(Math.random()) ? "template1" : "template2")).innerHTML;
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" id="useJquery"> Use jQuery ?
<input type="checkbox" id="replace"> Replace ?
<input type="button" id="button" value="Randomize!"/>
<script type="text/template" id="template1"><div>I chose : VIDEO 1</div></script>
<script type="text/template" id="template2"><div>I chose : VIDEO 2</div></script>
<div id="container"></div>