-
Notifications
You must be signed in to change notification settings - Fork 4
/
script.js
81 lines (74 loc) · 3.34 KB
/
script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
$(document).ready(function() {
var firstOperand = null; // الطّرف الأوّل من العمليّة
var operator = null; // العامل الرّياضي بين الطّرفين: جمع أم طرح... إلخ.
var secondOperand = null; // الطرف الثّاني من العملية
var isPending = false; // هل العملية جارية؟ أم أننا بدأنا عملية حسابية جديدة؟
function calculate() {
// حول العبارات النّصيّة إلى أرقام
firstOperand = Number(firstOperand);
secondOperand = Number(secondOperand);
// ثم نفذ العملية بحسب العامل الرياضي
if (operator === '+') {
return firstOperand + secondOperand;
} else if (operator === '-') {
return firstOperand - secondOperand;
} else if (operator === '×') {
return firstOperand * secondOperand;
} else if (operator === '÷') {
return firstOperand / secondOperand;
}
}
// صفر الآلة الحاسبة بإعادة حالتها إلى ما كانت عليه في البداية
function resetCalculator() {
firstOperand = null;
secondOperand = null;
operator = null;
isPending = false;
}
$('#calculate').click(function() {
// لا تقم بالحساب إلّا إذا كانت كلّ مكونات العمليّة قد أدخلت
if (operator !== null && firstOperand !== null && secondOperand !== null) {
var result = calculate();
$('input').val(result); // اعرض نتيجة العملية في حقل الإدخال
resetCalculator(); // صفر الآلة الحاسبة
// اعتبر ناتج العمليّة الحالية هو الطّرف الأول للعمليّة القادمة
firstOperand = result;
}
});
$('#reset').click(function() {
resetCalculator();
$('input').val(''); // اجعل قيمة حقل الإدخال فارغة
});
$('#numbers > button:not(#calculate)').click(function() {
var value = $(this).text();
if (operator === null) {
// في الطرف الأول من العملية
if (isPending === true && firstOperand !== null) {
// المستخدم يتابع إدخال الأرقام في الطّرف الأول
firstOperand = firstOperand + value;
} else {
// هذه هي المرّة الأولى الّتي يبدأ فيها المُستخدم بكتابة رقم
firstOperand = value;
// الآن أصبحت العمليّة جارية
isPending = true;
}
// اجعل قيمة حقل الإدخال مساوية للعدد الجديد
$('input').val(firstOperand);
} else {
// في الطرف الثاني من العملية
if (secondOperand === null) {
// هذه هي المرّة الأولى الّتي يبدأ فيها المستخدم بكتابة رقم في الطّرف الثّاني
secondOperand = value;
} else {
// المستخدم يتابع إدخال الأرقام في الطّرف الثّاني
secondOperand = secondOperand + value;
}
// اجعل قيمة حقل الإدخال مساوية للطّرف الثّاني
$('input').val(secondOperand);
}
});
$('#operators > button').click(function() {
operator = $(this).text(); // + - × ÷
isPending = true;
});
});