var game = {
setPlayerNum: function(){
var num = parseInt(prompt("Enter Number of Players"));
this.setPlayerName();
},
setPlayerName: function(){
if (num == 2){
do {
var playerOne = prompt("Enter Your Name");
} while(true){
var playerTwo = prompt("Enter Your Name");
break;
}
}
},
boardInitialize: function(){
},
boardInitializeView: function(){
},
}
我有两个带对象的函数。第一个函数运行正常,但回调函数没有运行。我不知道为什么
答案 0 :(得分:0)
有几件事。范围问题,以及不必要且格式错误的while循环。试试这个:
var game = {
num: 0,
playerOne: '',
playerTwo: '',
setPlayerNum: function(){
this.num = parseInt(prompt("Enter Number of Players"));
this.setPlayerName();
},
setPlayerName: function(){
this.playerOne = prompt("Enter Your Name");
if (this.num == 2){
this.playerTwo = prompt("Enter Your Name");
}
}
}
game.setPlayerNum();

更详细地解释范围问题:您最初在num
方法中声明的setPlayerNum
变量不可用于该范围之外的其他方法。通过首先声明num
变量,作为对象的一部分,您可以引用它。我对您的playerOne
和playerTwo
变量做了同样的事情。
但是你可能会发现重新安排脚本会更好一点,这样你就可以拥有任意数量的玩家:
var game = {
playerNames: [],
setPlayerNum: function(){
var num = parseInt(prompt("Enter Number of Players"));
for (var i = 0; i < num; i++) {
this.setPlayerName(i + 1);
}
},
setPlayerName: function(num){
this.playerNames.push( prompt("Enter Your Name For Player " + num) );
}
}
game.setPlayerNum();
&#13;
答案 1 :(得分:0)
这不是do / while statament的语法。你不能在一段时间后打开一个范围,你应该用&#34 ;;&#34;结束do / while语句。 检查一下
http://www.w3schools.com/jsref/jsref_dowhile.asp
我不明白你想要做什么,但我猜测do / while不是必要的。你可以这样做:
function() {
var playerOne = prompt("Enter Your Name");
if (this.num == 2){
var playerTwo = prompt("Enter Your Name");
}
}