我没有看到任何具体回答这个问题的内容。 我打算开发一个基于文本的游戏,其中涉及每次空闲栏填满时发生的动作(每x秒通过) 我只想弄清楚我的javascript的基本布局,它将在这个游戏中制作战斗系统。
如果pDamThisRound不是>我正试图让计算机重新计算pDamThisRound。这种情况下的baseD是10。
如果它大于baseD我的代码工作并打印pDamThisRound。但如果不是代码就不打印任何内容。
var baseD = 10;
var pStr = 25;
var pDam = Math.floor((baseD + pStr) / 2);
var pDamThisRound;
var pDamTR = function() {
pDamThisRound = (Math.floor(Math.random() * 2 * pDam));
};
pDamTR();
if(pDamThisRound > baseD) {
document.getElementById("h").innerHTML = pDamThisRound;
}
else {
pDamTR();
}
答案 0 :(得分:2)
代码只打印
那是因为没有任何代码可以打印任何东西。查看您的else
块:
else {
pDamTR();
}
该功能有什么作用?:
var pDamTR = function() {
pDamThisRound = (Math.floor(Math.random() * 2 * pDam));
};
你没有产生任何输出。
基本上,如果你想打印一些东西,那么,打印一些东西。就像您在if
块中已经一样。例如:
document.getElementById("h").innerHTML = "something";
答案 1 :(得分:1)
函数pDamTR可能正在执行,问题在于它为变量赋值,但对它没有任何作用。
答案 2 :(得分:0)
在这里,一个带有while运算符的更正版本:
https://jsfiddle.net/qfnvf1y8/6/
var baseD = 10;
var pStr = 25;
var pDam = Math.floor((baseD + pStr) / 2);
var pDamThisRound;
var pDamTR = function() {
pDamThisRound = (Math.floor(Math.random() * 2 * pDam));
};
pDamTR();
while(pDamThisRound <= baseD) {
pDamTR();
}
if(pDamThisRound > baseD) {
document.getElementById("h").innerHTML = pDamThisRound;
}
else {
pDamTR();
}
此致
尤金
答案 3 :(得分:0)
有几个错误:
1)你的其他分支不打印任何东西
2)如果你想要pDamThisRound > baseD
,你需要一个while循环
while(pDamThisRound <= baseD) {
pDamTR();
}
printpDamTR();
function printpDamTR(){
document.getElementById("h").innerHTML = pDamThisRound;
}
函数printpDamTR
不是必需的,但通常最好封装这些东西,因为你可能会更频繁地使用它。此外,它还增加了代码的可维护性,因为您放松了JS和HTML之间的依赖关系。
答案 4 :(得分:0)
您可以使用setTimeout
来帮助您,使用以下内容:
var baseD = 10;
var pStr = 25;
var pDam = Math.floor((baseD + pStr) / 2);
var timeoutDuration = 3000; // 3 seconds
window.setTimeout(function () {
// execute the check and the update logic here
var pDamThisRound = (Math.floor(Math.random() * 2 * pDam));
if(pDamThisRound > baseD) {
document.getElementById("h").innerHTML = pDamThisRound;
}
}, timeoutDuration);
这将每3秒执行一次检查