如果操作不正确,则调用函数

时间:2016-02-03 21:14:04

标签: javascript function variables if-statement

我没有看到任何具体回答这个问题的内容。 我打算开发一个基于文本的游戏,其中涉及每次空闲栏填满时发生的动作(每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();
}

https://jsfiddle.net/qfnvf1y8/4/

5 个答案:

答案 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秒执行一次检查