【发布时间】:2012-11-20 19:20:39
【问题描述】:
这里我有两个“类”制作卡片和卡片。 Cards 本质上是一个具有特定方法的数组:
- 添加卡片
- 移除卡
- 排序和随机播放
Card 是一个对象,用于保存花色值并输出连接两者的字符串。
我的问题是尝试在单击按钮时运行此代码,即setup()。
我发现当我刚刚创建一张卡片时,它仍然可以运行。我知道这一点是因为输出仍然会变为 hello world。
但是当我尝试将卡片添加到卡片类或卡片组时。脚本停止运行。我不知道这是为什么,我感觉它不喜欢我使用数组的方式。
这是第一个问题。
我的第二个问题是当我
var temp= new card('c','2');
alert(temp.getvalue());
这也失败了。
任何关于我在这里做错了什么的见解都会有所帮助并受到赞赏。
function setup() {
var temp = new card('c', '2');
var textbox = document.getElementById("output");
textbox.value = "Hello, world!";
};
Array.prototype.shuffle = function () {
for (var i = this.length - 1; i > 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
var tmp = this[i];
this[i] = this[j];
this[j] = tmp;
}
return this;
}
function card(s, v) {
this.suit = s;
this.value = v;
this.getvalue = function () {
return (suit.toString() + value.toString());
};
this.getSortOrder = function () {
var factor;
if (this.suit == 'c') {
factor = 0;
}
else if (this.suit == 'd') {
factor = 1;
}
else if (this.suit == 'h') {
factor = 2;
}
else if (this.suit == 's') {
factor = 3;
}
else {
factor = -2;
}
return (this.value + 13 * factor);
};
};
function Cards() {
this.list = new Array();
this.Addcard = function (c) {
list.push(c);
};
this.removeCard = function (c) {
list.splice(list.indexOf(c), 1);
};
this.lookat = function (i) {
return list[i];
};
this.sort = function () {
list.sort();
};
this.shuffle = function () {
list.shuffle();
};
this.prototype;
};
【问题讨论】:
-
javascript 开发控制台是否出现错误?
-
每个问题一个问题。
-
Stackoverlow 用户不是调试器。
-
请考虑发布不是阅读繁琐的代码 - 删除 cmets,正确缩进,将行合并。这样,人们可能会更倾向于帮助您找到解决方案。 =)
-
我同意@J.Steen 的观点,我花了一分钟来解析代码,然后才发现出了什么问题。删除无用的换行符也会有所帮助,特别是因为 SO 上的代码窗口非常小。
标签: javascript arrays html function object