X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Калькулятор
to0n1
to0n1
Topic Starter сообщение 21.4.2011, 0:09; Ответить: to0n1
Сообщение #1


Пишу windows like калькулятор помогите пожалуйста доработать .... не могу придумать проверку правильно, что бы кнопки корректно работали при выполнении нескольких действий без нажатия равно.
Вот код при тестировании выявите ошибки .... спасибо заранее ...

З.Ы. Я не прошу готового кода (хотя это бы было прекрасно:)) ! подскажите как изменить алгоритм проверки ...
<script type="text/javascript" language="javascript" src="./js/jquery.js"> </script>
<script type="text/javascript" language="javascript" src="./js/calc.js"> </script>
<div class="mainapp">

<form action="" name="calc">

<input type="text" name="tablo" id="tablo" value="" onkeyup="return proverka(this);" onchange="return proverka(this);">

<table border="0">
<tr>
<td><input type="button" value="7" class="numb" ></td>
<td><input type="button" value="8" class="numb"></td>
<td><input type="button" value="9" class="numb" ></td>
<td><input type="button" value="*" class="func"></td>
</tr>
<tr>
<td><input type="button" value="4" class="numb"></td>
<td><input type="button" value="5" class="numb"></td>
<td><input type="button" value="6" class="numb"></td>
<td><input type="button" value="/" class="func"></td>
</tr>
<tr>
<td><input type="button" value="1" class="numb"></td>
<td><input type="button" value="2" class="numb"></td>
<td><input type="button" value="3" class="numb"></td>
<td><input type="button" value="-" class="func"></td>
</tr>
<tr>
<td><input type="button" value="0" class="numb"></td>
<td><input type="button" value="." name="dot" onClick="but(dot)"></td>
<td><input type="button" value="=" class="ravno"></td>
<td><input type="button" value="+" class="func"></td>
</tr>
</table>
</form>
</div>

[JS]var first=null;
var second=null;
var result=null;
var func=null;
$(function() {
$(".numb").click(function() {
if (result!=null & $("#tablo").val()!="")
{
result=null;
$("#tablo").val("");
}
if (this.value!="0"){
$("#tablo").val($("#tablo").val()+this.value);
}
else
{
if ($("#tablo").val()=="0" )
{
return false;
}
else
{
$("#tablo").val($("#tablo").val()+this.value);
}
}

}
)});
$(function() {
$(".func").click(function() {
if (first ==null)
{
first = $("#tablo").val();
$("#tablo").val("");
if (result!=null)first=result;
func=this.value;
result=null;
}
else
{
if (result == null){
if ($("#tablo").val() == "")
{
second="0"
}
else
{
second=$("#tablo").val();
}
$("#tablo").val(getresult(first,second,func));
first=null;
second=null;
}
}
}
)});

$(function() {
$(".ravno").click(function() {
if (result == null){
if ($("#tablo").val() == "")
{
second="0"
}
else
{
second=$("#tablo").val();
}
$("#tablo").val(getresult(first,second,func));
first=null;
second=null;
}
}
)});
function proverka(input)
{
input.value = input.value.replace(/[^\d.]/g, '');
}

function getresult(first,second,func)
{
switch (func){
case "+":
result=parseFloat(first) + parseFloat(second);
break;
case "-":
result=parseFloat(first) - parseFloat(second);
break;
case "/":
result=parseFloat(first) / parseFloat(second);
break;
case "*":
result=parseFloat(first) * parseFloat(second);
break;
}
return result;
}[/JS]
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Galen
Galen
сообщение 24.4.2011, 3:02; Ответить: Galen
Сообщение #2


В коде было лень разбираться, поэтому на основе вашего написал свой вариант:
<script type="text/javascript" language="javascript" src="jquery.js"> </script>
<script type="text/javascript" language="javascript">

var first = null;
var second = null;
var func = null;

//выполняем подсчёт
function getresult() {
var result;
switch(func) {
case "+":
result = parseFloat(first) + parseFloat(second);
break;
case "-":
result = parseFloat(first) - parseFloat(second);
break;
case "/":
result = parseFloat(first) / parseFloat(second);
break;
case "*":
result = parseFloat(first) * parseFloat(second);
break;
}
return result;
}

// обработка кнопок с цифрами
$(function() {
$(".numb").click(function() {
$("#tablo").val(parseFloat($("#tablo").val() + this.value));
})
});

//обработка кнопок с функциями
$(function() {
$(".func").click(function() {
if(first == null) {
first = ($("#tablo").val() == "")? "0": $("#tablo").val();
} else {
if($("#tablo").val() == "") return;
second = $("#tablo").val();
first = getresult();
second = null;
}
func = this.value;
$("#tablo").val("");
}
)});

// обработка равно
$(function() {
$(".ravno").click(function() {
if(first == null) return;
if(second == null) second = ($("#tablo").val() == "")? "0": $("#tablo").val();
if(func != null) {
var res = getresult();
$("#tablo").val(res);
first = null;
second = null;
func = null;
}
}
)});

</script>
<div class="mainapp">
<form action="" name="calc">

<input type="text" name="tablo" id="tablo" value="0" disabled="disabled">

<table border="0">
<tr>
<td><input type="button" value="7" class="numb" ></td>
<td><input type="button" value="8" class="numb"></td>
<td><input type="button" value="9" class="numb" ></td>
<td><input type="button" value="*" class="func"></td>
</tr>
<tr>
<td><input type="button" value="4" class="numb"></td>
<td><input type="button" value="5" class="numb"></td>
<td><input type="button" value="6" class="numb"></td>
<td><input type="button" value="/" class="func"></td>
</tr>
<tr>
<td><input type="button" value="1" class="numb"></td>
<td><input type="button" value="2" class="numb"></td>
<td><input type="button" value="3" class="numb"></td>
<td><input type="button" value="-" class="func"></td>
</tr>
<tr>
<td><input type="button" value="0" class="numb"></td>
<td><input type="button" value="." name="dot" onClick="but(dot)"></td>
<td><input type="button" value="=" class="ravno"></td>
<td><input type="button" value="+" class="func"></td>
</tr>
</table>
</form>
</div>
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
to0n1
to0n1
Topic Starter сообщение 24.4.2011, 9:15; Ответить: to0n1
Сообщение #3


Хм... Спасибо разобрался понял где был не прав .... но сделал по своему, оцените )))
[JS]var first=null;
var second=null;
var result=null;
var func=null;
var flag=false;
$(function() {
$(".numb").click(function() {
if ( $("#tablo").val()=="0" || flag == true)
{
$("#tablo").val(this.value);
flag=false;
}
else
{
if ($("#tablo").val().length !=13) $("#tablo").val($("#tablo").val()+this.value);
}


}
)});
$(function() {
$(".func").click(function()
{
var reg="[/*/+-]";
var str=$("#tablo").val();
var ProvercaFunc=str.match(reg);
if (ProvercaFunc == null || ProvercaFunc == ".")
{
$("#tablo").val($("#tablo").val() + this.value);
}
else
{
var lastsimbol = str.substr(str.length-1,1);
if (ProvercaFunc == lastsimbol)
{
var tmp=str.substr(0,str.length-1);
tmp += this.value;
$("#tablo").val(tmp);
}
else
{
var massiv= new Array();
massiv = str.split(ProvercaFunc);
first = massiv['0'];
second = massiv['1'];
func = ProvercaFunc;
$("#tablo").val(getresult(first,second,func) + this.value);
}
}
flag = false;
}
)});

$(function() {
$(".ravno").click(function()
{
var reg="[/*/+-]";
var str=$("#tablo").val();
var ProvercaFunc=str.match(reg);
var lastsimbol = str.substr(str.length-1,1);
if (ProvercaFunc == lastsimbol)
{
var massiv= new Array();
massiv = str.split(ProvercaFunc);
first = massiv['0'];
second = first;
func = ProvercaFunc;
$("#tablo").val(getresult(first,second,func));
flag=true;
}
else
{
var massiv= new Array();
massiv = str.split(ProvercaFunc);
first = massiv['0'];
second = massiv['1'];
func = ProvercaFunc;
$("#tablo").val(getresult(first,second,func));
flag=true;
}

}
)});
function proverka(input)
{
input.value = input.value.replace(/[^\d.]/g, '');
}

function getresult(one,two,funct)
{
if (one != null && two != null & funct != null){
if (funct == "+") result=parseFloat(one) + parseFloat(two);
else if (funct == "-") result=parseFloat(one) - parseFloat(two);
else if (funct == "/") result=parseFloat(one) / parseFloat(two);
else if (funct == "*") result=parseFloat(one) * parseFloat(two);
first = null;
second = null;
func=null;
}
var tmp =result.toString();
if (tmp.length>5)
{
tmp= result.toFixed(5);
result = tmp;
}

return result;
}
function decimal ()
{
var curReadOut = $("#tablo").val();
if ($("#tablo").val()=="0")
{
curReadOut = "0.";
}
else
{
var reg="[/*/+-]";
var str=$("#tablo").val();
var ProvercaFunc=str.match(reg);
if (ProvercaFunc !=null)
{
var massiv= new Array();
massiv = str.split(ProvercaFunc);
if (massiv['1'].indexOf(".") == -1)
curReadOut += ".";
}
else
{
if (curReadOut.indexOf(".") == -1)
curReadOut += ".";
}
}
$("#tablo").val(curReadOut);
}[/JS]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Galen
Galen
сообщение 24.4.2011, 13:00; Ответить: Galen
Сообщение #4


Главное, что разобрались :)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Malganus
Malganus
сообщение 30.4.2011, 15:52; Ответить: Malganus
Сообщение #5


я б не тыкал
[IMG]http://i20.fastpic.ru/thumb/2011/0430/ff/bd0fe05109b7dea7166f8320806c1eff.jpeg[/IMG]
причем эта дрянь срабатывает при открытии страницы темы
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
MetSerp
MetSerp
сообщение 30.4.2011, 16:20; Ответить: MetSerp
Сообщение #6


Malganus, снес сообщения этого клоуна перечитавшего журнал ксакеп, надеюсь ему еще и родители по заднице надают за невыученые уроки
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
MetSerp
MetSerp
сообщение 30.4.2011, 16:28; Ответить: MetSerp
Сообщение #7


а срабатывало за счет картинки которая вставлена в сообщение, клоуну выдан бан.

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Кальку, точнее калькулятор в строительной тематике
Нужен PHP код
1 MihalychAIP 896 20.4.2022, 2:04
автор: sergogogo
Открытая тема (нет новых ответов) Ищется программист. Создать калькулятор цен на сайте
JS | DLE
0 Mukis 1662 1.4.2019, 15:24
автор: Mukis
Открытая тема (нет новых ответов) [Разработка плагина] Калькулятор WordPress
Необходимо написать плагин под WordPress
3 mimoplus 2954 9.10.2017, 15:07
автор: Alexandr_js
Открытая тема (нет новых ответов) Бесплатно сделаю на javascript онлайн калькулятор
1 drakon1988 1445 17.1.2017, 18:34
автор: fedornabilkin
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыБесплатно создадим калькулятор, дающий заявки с сайта!
6 Sky1 3035 1.12.2016, 22:16
автор: Sky1


 



RSS Текстовая версия Сейчас: 29.3.2024, 11:05
Дизайн