我有一个JavaScript计算器,它使用以下函数在显示中添加字符:
function addChar(input, character) {
if (input.value == null || input.value == "0"){
input.value = character}
else{
input.value += character}
};
这是根据按下的按钮添加一个数字:
$.each([1, 2, 3, 4, 5, 6, 7, 8, 9, 0], function(i, e) {
$('#button-' + e).click(function() {
addChar(this.form.display, e);
});
});
我遇到的问题是用户能够将数字添加到显示值的末尾 AFTER 计算(这没什么意义)。例如,假设我发现8 rad的余弦,计算器返回-0.14550003380861354。如果我之后点击一个数字键,这个数字只是附加到前一个字符串(例如,如果我点击2,则显示将显示为-0.14550003380861354 2 )。
我希望计算器只是重置并显示按下的键的值。如果按下的键是操作符,那很好,因为它允许用户使用他们刚刚获得的值。
我如何修改这些功能中的一个或两个,以便达到预期效果?
答案 0 :(得分:1)
计算结果时,在输入中添加一些类,例如result
,并在添加char之前检查输入是否具有此类。如果是,请清除输入并删除该类。
例如:
$.each([1, 2, 3, 4, 5, 6, 7, 8, 9, 0], function(i, e) {
$('#button-' + e).click(function() {
if ($(this.form.display).hasClass("result")) {
$(this.form.display).removeClass("result").val("");
}
addChar(this.form.display, e);
});
});
$("#calculate-button").click(function() {
$(this.form.display).addClass("result");
// do calculation
});
答案 1 :(得分:0)
您可以在计算器中添加一些“状态”属性,指示何时显示计算结果。输入事件的行为会根据计算器的当前“状态”而改变。
答案 2 :(得分:0)
您是否可以通过添加按钮逻辑输入来将输入字段更改为<input type="number" readonly="readonly" />
?像:
document.getElementById("numberInput").setAttribute("readonly","readonly");
答案 3 :(得分:0)
我想说使用布尔变量(例如:isResult)来存储信息,因为这是结果与否。如果这是结果,则替换为新字符。你的功能看起来像这样:
function addChar(input, character) {
if (input.value == null || input.value == "0" || isResult){
input.value = character}
else{
input.value += character}
};