Javascript OOP,一个不会起作用的简单计算器
Javascript OOP, a simple calculator that will not function
我正在构建一个简单的计算器,将其纳入一个简单的基于web的POS系统。我没有太多的经验与JS,但我在C编程,c++ &;Java广泛。
在firefox调试器中,我得到一个异常TypeError: "this。getValue不是一个函数"当它在updateDisplay()方法中被调用时
在JS中不支持这种结构吗?在一个对象的方法调用对象方法?
http://jsfiddle.net/uPaLS/33/function KeyPad(divReference) {
this.divDisplay = divReference;
this.value = "0";
this.comma = false;
}
KeyPad.prototype.getValue = function () {
return parseFloat(this.value);
};
KeyPad.prototype.updateDisplay = function () {
$(document).ready(function () {
$(this.divDisplay).text(this.getValue());
});
};
KeyPad.prototype.keyPressed = function (valueString) {
if (valueString == '.' && this.comma === true) {
return;
}
this.value = this.value + valueString;
if (valueString == '.') {
this.comma = true;
}
this.updateDisplay();
};
KeyPad.prototype.reset = function () {
this.value = "0";
this.comma = false;
this.updateDisplay();
};
var keyPad = new KeyPad("#keypad_display");
在你的函数updateDisplay中,this
不指向你的KeyPad对象:它指向$(document),因为你不在同一范围的函数是如何调用的。
KeyPad.prototype.updateDisplay = function () {
//'this' is Keypad
$(document).ready(function () {
//'this' is $(document)
$(this.divDisplay).text(this.getValue());
});
};
我不认为(也许我错了)使用$(document)。这里,在函数内部,是一个很好的实践。这应该可以简单地修复您的错误:
KeyPad.prototype.updateDisplay = function () {
$(this.divDisplay).text(this.getValue());
};
正如sroes在注释中所说,您应该使用$(document)。像这样准备好:
$(document).ready(function () {
var keyPad = new KeyPad("#keypad_display");
});
相关文章:
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 监视函数从服务返回不起作用,但作用域函数起作用
- 幻灯片滚动javascript不起作用
- 简单的javascript在Shopify中不起作用
- Javascript旅行计算器不起作用
- 简单的JS计算器-为什么不是'这个if语句不起作用
- 编程新手,可以'我不明白为什么这个因子计算器没有;不起作用
- 带有计算器的Javascript列表不起作用
- 提示计算器 jquery 不起作用
- JavaScript计算器脚本不起作用
- 为什么我的Javascript价格计算器不起作用
- 自制计算器不起作用
- Javascript计算器退格键第一次不起作用
- 为什么这个简单的HTML/JavaScript计算器不起作用
- 简单的 HTML/JavaScript 计算器不起作用
- JavaScript月计算器不起作用
- JS简单成绩计算器代码不起作用
- 出于某种原因,此代码上的计算器赢得了'不起作用
- PHP 做一个简单的计算器 - 代码不起作用
- Javascript OOP,一个不会起作用的简单计算器