If/Then Javascript显示HTML代码
我有一些html5和javascript代码来创建旋转的轮盘赌。它被分成14个结果。我的问题是,我如何才能得到一些独特的HTML代码来显示每个轮子的结果。例如,如果控制盘在业务上着陆,则控制盘下方将显示一些包含业务信息的文本 这是我的HTML代码,下面是指向一个工作示例的链接:If/Then Javascript显示HTML代码,javascript,html,canvas,if-statement,Javascript,Html,Canvas,If Statement,我有一些html5和javascript代码来创建旋转的轮盘赌。它被分成14个结果。我的问题是,我如何才能得到一些独特的HTML代码来显示每个轮子的结果。例如,如果控制盘在业务上着陆,则控制盘下方将显示一些包含业务信息的文本 这是我的HTML代码,下面是指向一个工作示例的链接: <!--[if IE]><script type="text/javascript" src="/sites/default/files/1010/source/excanvas.js"><
<!--[if IE]><script type="text/javascript" src="/sites/default/files/1010/source/excanvas.js"></script><![endif]-->
<input type="button" value="spin" onclick="spin();" style="float: left;" />
<canvas id="wheelcanvas" width="800" height="750"></canvas>
<script type="application/javascript">
var colors = ["#B8D430", "#3AB745", "#029990", "#3501CB",
"#2E2C75", "#673A7E", "#CC0071", "#F80120",
"#F35B20", "#FB9A00", "#FFCC00", "#FEF200", "#B2DF00", "#5C8300"];
var classes = ["Business", "Office Education", "Continuing Care Assistant", "Practical Nursing",
"Primary Care Paramedic", "Early Childhood Education", "Cooking", "Electrician",
"Heavy Equipment Operator", "Industrial Mechanic - Millwright", "Plumbing & Pipefitting", "Truck Driver Training", "Welding", "Power Engineering"];
var startAngle = 0;
var arc = Math.PI / 7;
var spinTimeout = null;
var spinArcStart = 10;
var spinTime = 0;
var spinTimeTotal = 0;
var ctx;
function draw() {
drawRouletteWheel();
}
function drawRouletteWheel() {
var canvas = document.getElementById("wheelcanvas");
if (canvas.getContext) {
var outsideRadius = 300;
var textRadius = 260;
var insideRadius = 100;
ctx = canvas.getContext("2d");
ctx.clearRect(5,0,1000,1000);
ctx.strokeStyle = "black";
ctx.lineWidth = 2;
ctx.font = 'bold 10px sans-serif';
for(var i = 0; i < 14; i++) {
var angle = startAngle + i * arc;
ctx.fillStyle = colors[i];
ctx.beginPath();
ctx.arc(400, 400, outsideRadius, angle, angle + arc, false);
ctx.arc(400, 400, insideRadius, angle + arc, angle, true);
ctx.stroke();
ctx.fill();
ctx.save();
ctx.shadowOffsetX = -1;
ctx.shadowOffsetY = -1;
ctx.shadowBlur = 0;
ctx.shadowColor = "rgb(220,220,220)";
ctx.fillStyle = "black";
ctx.translate(400 + Math.cos(angle + arc / 2) * textRadius, 400 + Math.sin(angle + arc / 2) * textRadius);
ctx.rotate(angle + arc / 2 + Math.PI / 2);
var text = classes[i];
ctx.fillText(text, -ctx.measureText(text).width / 2, 0);
ctx.restore();
}
//Arrow
ctx.fillStyle = "black";
ctx.beginPath();
ctx.moveTo(400 - 4, 400 - (outsideRadius + 5));
ctx.lineTo(400 + 4, 400 - (outsideRadius + 5));
ctx.lineTo(400 + 4, 400 - (outsideRadius - 5));
ctx.lineTo(400 + 9, 400 - (outsideRadius - 5));
ctx.lineTo(400 + 0, 400 - (outsideRadius - 13));
ctx.lineTo(400 - 9, 400 - (outsideRadius - 5));
ctx.lineTo(400 - 4, 400 - (outsideRadius - 5));
ctx.lineTo(400 - 4, 400 - (outsideRadius + 5));
ctx.fill();
}
}
function spin() {
spinAngleStart = Math.random() * 10 + 10;
spinTime = 0;
spinTimeTotal = Math.random() * 3 + 4 * 1000;
rotateWheel();
}
function rotateWheel() {
spinTime += 30;
if(spinTime >= spinTimeTotal) {
stopRotateWheel();
return;
}
var spinAngle = spinAngleStart - easeOut(spinTime, 0, spinAngleStart, spinTimeTotal);
startAngle += (spinAngle * Math.PI / 180);
drawRouletteWheel();
spinTimeout = setTimeout('rotateWheel()', 30);
}
function stopRotateWheel() {
clearTimeout(spinTimeout);
var degrees = startAngle * 180 / Math.PI + 90;
var arcd = arc * 180 / Math.PI;
var index = Math.floor((360 - degrees % 360) / arcd);
ctx.save();
ctx.font = 'bold 30px sans-serif';
var text = classes[index]
ctx.fillText(text, 400 - ctx.measureText(text).width / 2, 400 + 10);
ctx.restore();
document.getElementById('wheelResult').innerHTML = 'Test' + text;
}
function easeOut(t, b, c, d) {
var ts = (t/=d)*t;
var tc = ts*t;
return b+c*(tc + -3*ts + 3*t);
}
draw();
</script>
<p id="wheelResult"></p>
有几种方法可以做到这一点,但这是我要做的。 您可以使用css样式的display:none创建一个div标记,然后使用所需的信息设置它,并根据需要隐藏和显示它 例如:
<script>
var htmlData = ['<h1>Business</h1><br><span>What is Business?</span><br>...', ...];
....
function spin()
{
//Hide description box.
document.getElementById('idDescriptionBox').style.display = 'none';
spinAngleStart = Math.random() * 10 + 10;
....
}
....
function stopRotateWheel()
{
....
//Set description and display it.
var descriptionBox = document.getElementById('idDescriptionBox');
descriptionBox.innerHTML = htmlData[index];
descriptionBox.style.display = 'block';
}
....
</script>
<div id="idDescriptionBox" style="display:none;">
<!--Description info in here-->
....
</div>
您的页面工作正常,您的问题已经实现,问题是什么?它工作正常是的,但我在实现每个不同结果弹出的唯一文本时遇到困难。例如,如果轮子落在业务上,它会显示business yes,但它是从轮子中的javascript获取的。我需要它在后面的页面中调出html代码,它有一个与业务相关的特定描述,而不仅仅是单词business。嗯,我尝试将它嵌入到我的代码中,页面停止工作。这会为每个不同的控制盘结果显示唯一的文本吗?例如,如果他们在业务上着陆,它将显示业务信息,如果他们在管道上着陆,它将显示不同的管道信息?@JeremyBritz这取决于您在htmlData变量中输入的值。将与可能结果相关的不同数据放在该变量的正确指数上,它们对于每个结果都是正确唯一的。不知道为什么它不起作用。JeremyBritz我对它进行了测试,我能想到的唯一一件可能导致它无法工作的事情是,如果你照样复制htmlData变量,但没有完成这一行。你需要像for classes变量一样将所有正确的数据插入htmlData。还有一个问题,有没有办法在控制盘上的文本中添加换行符?@JeremyBritz我想对你会有帮助。只需注意插入该文本的行是ctx.fillTexttext,400-ctx.measureTexttext.width/2400+10;