【发布时间】:2015-07-13 22:39:10
【问题描述】:
我正在尝试制作一个战斗模拟器,在该模拟器中,我使用 JavaScript 中的 prompt() 函数提示用户输入进攻部队、防御部队以及击杀率。当我将代码写入HTML文档进行测试时,它无法提示用户。我确实意识到我现在可以通过使用原型来更好地编写下面的代码,但是这个想法是在完成代码之后才想到的。对于下面代码中的格式怪异,我也深表歉意。我需要帮助调试的代码如下。你能帮我弄清楚代码有什么问题吗?
<!DOCTYPE html>
<html>
<head>
<title> Battle Simulator AMUN </title>
</head>
<body>
<SCRIPT LANGUAGE="JAVASCRIPT">
var armyAttackingIn;
var armyAttackingNumber;
var armyDefendingIn;
var armyDefendingNumber;
//declares variables
armyAttackingIn=prompt("How many forces are in the attacking army?");
armyAttackingNumber = parseInt(armyAttackingIn);
armyDefendingIn=prompt("How many forces are in the defending army?");
armyDefendingNumber = parseInt(armyDefendingIn);
//gets the number of armies
var morale;
//makes morale a factor
var moraleYesOrNo = prompt("Shall morale be a factor? Y/N");
if (moraleYesOrNo=="Y"||moraleYesOrNo=="Yes"||moraleYesOrNo="yes") {
morale = ((defender/attacker)*3+.3)*100;
if (morale>=100) {
morale = 100;
}
}
else {
morale = 100;
};
//defines what morale is.
var killRateDefense = parseInt(prompt("Insert the defensive kill rate. Default is 70.","70");)/100;
var killRateOffense = parseInt(prompt("Insert the offensive kill rate. Default is 60.","60");)/100;
var battle = function() {
//defines the kill rate
var armyAttackingLeft = armyAttackingNumber - (armyDefendingNumber*killRateDefense*(100/morale));
var defendingArmyLeft = armyDefendingNumber - (armyAttackingNumber*killRateOffense*(morale/100));
//gets armies left
if(armyAttackingLeft<0) {
armyAttackingLeft = 0
};
if(armyDefendingLeft<0) {
armyDefendinigLeft = 0
};
//makes the minimum troops left 0
}
battle();
document.write("The attacking army was " + armyAttackingIn + "men strong" <br>");
document.write("The defending army was " + armyDefendingIn + "men strong" <br>");
document.write("The morale was " + morale + "/%" <br>);
document.write("The defensive kill rate was " + killRateDefensive + "/% and the offensive kill rate was " + killRateOffensive + "/%" <br>);
document.write("There were " + (armyAttackingNumber-armyAttackingLeft) + " attackers killed" <br>);
document.write("There were " + (armyDefendingNumber-armyDefendingLeft) + " defenders killed" <br>);
document.write("There are " + armyAttackingLeft + " attacking soldiers that survived and there are " + armyDefendingLeft + " defending soldiers that survived.");
if (armyAttackingLeft == 0) {
document.write(<br>"The attacking force was demolished. Everyone died.");
};
if (armyDefendingLeft == 0) {
document.write(<br>"The defending force was demolished. Everyone died.");
};
//writes the document
</SCRIPT>
</body>
</html>
【问题讨论】:
-
document.write(<br>给出语法错误。顺便说一句,除非有必要,否则永远不要使用document.write。 -
这里有不少错误。
moraleYesOrNo="yes"在开始时不是 javascript 中的有效逻辑语句。 -
我不知道这是否是您唯一的问题,但它应该是
document.write("<br> The...而不是您现在所拥有的。通过在浏览器中按 F12 打开其开发者工具,可以找到许多其他常见问题。
标签: javascript html prompt