Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.12.2015, 11:28
Аспирант
Отправить личное сообщение для serebann Посмотреть профиль Найти все сообщения от serebann
 
Регистрация: 22.12.2015
Сообщений: 38

Сложение и вычитание, получаются разные значения!
Подскажите, почему при вычитание (-) всё срабатывает правильно
А при сложении (+) просто прибавляется ещё одно число к существующему.
Проверить как это работает можете на странице:
http://payforyou.top/limit.php

А вот код:
<script>

window.onload = function(){


document.getElementById('button').onclick = function() {
var balanc = "20";
var gamebalanc = "3819430";


var bits = document.getElementById("bits").value;
var stav = document.getElementById("stav").value;



function randomInteger(min, max) {
var rand = min + Math.random() * (max - min);
rand = Math.round(rand);
return rand;
}
var sum = ( randomInteger(0, 100) )

if (balanc > bits) {
if (stav < sum) {
var resbits = bits * 2;
var newuserbal = balanc + resbits;
var newgamebal = gamebalanc - resbits;
}
if (stav > sum) {
var newuserbal = balanc - bits;
var newgamebal = gamebalanc + bits;
}
}


document.getElementById('userbal').innerHTML=newuserbal;
document.getElementById('gamebal').innerHTML=newgamebal;
document.getElementById('result').innerHTML=sum;


animate({
duration: 1000,
timing: function(timeFraction) {
return Math.pow(timeFraction, 2);
},
draw: function(progress) {
brick.style.left = progress * sum + '%';


}
});
};
}
</script>
Ответить с цитированием
  #2 (permalink)  
Старый 27.12.2015, 11:41
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от serebann
Подскажите, почему при вычитание (-) всё срабатывает правильно
А при сложении (+) просто прибавляется ещё одно число к существующему.
Потому, что значение поля, это строка, а + в JS не только складывает, но и является операцией конкатенации строк.

Либо var bits = parseInt(document.getElementById("bits").value);, либо var bits = +document.getElementById("bits").value;
Ответить с цитированием
  #3 (permalink)  
Старый 27.12.2015, 11:55
Аспирант
Отправить личное сообщение для serebann Посмотреть профиль Найти все сообщения от serebann
 
Регистрация: 22.12.2015
Сообщений: 38

Попробовал оба варианта и история та же.
Если я правильно понял нужно было заменить вот эту строчку
var bits = document.getElementById("bits").value;

на один из этих вариантов.
Либо var bits = parseInt(document.getElementById("bits").value);, либо var bits = +document.getElementById("bits").value;
Помогите пож.
Ответить с цитированием
  #4 (permalink)  
Старый 27.12.2015, 12:06
Аспирант
Отправить личное сообщение для serebann Посмотреть профиль Найти все сообщения от serebann
 
Регистрация: 22.12.2015
Сообщений: 38

Теперь всё работает правильно, преобразовал в числа.
<script>

window.onload = function(){


document.getElementById('button').onclick = function() {
var balanc = "20";
var gamebalanc = "3819430";
var balanc = Number(balanc);
var gamebalanc = Number(gamebalanc);

var bits = document.getElementById("bits").value;
var stav = document.getElementById("stav").value;
var bits = Number(document.getElementById("bits").value);
var stav = Number(document.getElementById("stav").value);

function randomInteger(min, max) {
var rand = min + Math.random() * (max - min);
rand = Math.round(rand);
return rand;
}
var sum = ( randomInteger(0, 100) )

if (balanc > bits) {
if (stav < sum) {
var resbits = bits * 2;
var newuserbal = balanc + resbits;
var newgamebal = gamebalanc - resbits;
}
if (stav > sum) {
var newuserbal = balanc - bits;
var newgamebal = gamebalanc + bits;
}
}


document.getElementById('userbal').innerHTML=newuserbal;
document.getElementById('gamebal').innerHTML=newgamebal;
document.getElementById('result').innerHTML=sum;


animate({
duration: 1000,
timing: function(timeFraction) {
return Math.pow(timeFraction, 2);
},
draw: function(progress) {
brick.style.left = progress * sum + '%';


}
});
};
}
</script>

Последний раз редактировалось serebann, 27.12.2015 в 12:09.
Ответить с цитированием
  #5 (permalink)  
Старый 27.12.2015, 12:10
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

var  a = '1', b = '2'; //строки
alert(a + b) //конкатенация строк
a = parseInt(a);
alert(a + b) //все равно конкатенация, так как b все еще строка
b = parseInt(b);
alert(a + b) //сложение, ибо числа
Ответить с цитированием
  #6 (permalink)  
Старый 27.12.2015, 12:18
Аспирант
Отправить личное сообщение для serebann Посмотреть профиль Найти все сообщения от serebann
 
Регистрация: 22.12.2015
Сообщений: 38

Сообщение от laimas Посмотреть сообщение
var  a = '1', b = '2'; //строки
alert(a + b) //конкатенация строк
a = parseInt(a);
alert(a + b) //все равно конкатенация, так как b все еще строка
b = parseInt(b);
alert(a + b) //сложение, ибо числа
Помогите решить одну оставшуюся задачу.
Изначально Переменные:
balance и gamebalance имеют значения 20 и 3819430
И при каждом нажатии на кнопку старт скрипт отталкивается от этих значений, а мне нужно чтоб он отталкивался от новых значений которые собственно меняются в строках Game Balance и Your Balance на странице
http://payforyou.top/limit.php
Ответить с цитированием
  #7 (permalink)  
Старый 27.12.2015, 12:56
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Ну так перезаписывайте balance и gamebalance новыми значениями.
Ответить с цитированием
  #8 (permalink)  
Старый 27.12.2015, 13:02
Аспирант
Отправить личное сообщение для serebann Посмотреть профиль Найти все сообщения от serebann
 
Регистрация: 22.12.2015
Сообщений: 38

Сообщение от laimas Посмотреть сообщение
Ну так перезаписывайте balance и gamebalance новыми значениями.
Как? В каком месте это сделать?
Просто покажите пож.
<script>

window.onload = function(){


document.getElementById('button').onclick = function() {

var balanc = "20";
var gamebalanc = "3819430";
var balanc = Number(balanc);
var gamebalanc = Number(gamebalanc);

var bits = document.getElementById("bits").value;
var stav = document.getElementById("stav").value;
var bits = Number(document.getElementById("bits").value);
var stav = Number(document.getElementById("stav").value);

function randomInteger(min, max) {
var rand = min + Math.random() * (max - min);
rand = Math.round(rand);
return rand;
}
var sum = ( randomInteger(0, 100) );
var sum = Number(sum);

if (balanc > bits) {
if (stav > sum) {
var resbits = bits * 2;
var newuserbal = balanc + resbits;
var newgamebal = gamebalanc - resbits;
document.getElementById('userbal').innerHTML=newuserbal;
document.getElementById('gamebal').innerHTML=newgamebal;
document.getElementById('msg').innerHTML=' ';
}

if (stav < sum) {
var newuserbal = balanc - bits;
var newgamebal = gamebalanc + bits;
document.getElementById('userbal').innerHTML=newuserbal;
document.getElementById('gamebal').innerHTML=newgamebal;
document.getElementById('msg').innerHTML=' ';
}

}
else document.getElementById('msg').innerHTML='Insufficient Funds';



document.getElementById('result').innerHTML=sum;

animate({
duration: 1000,
timing: function(timeFraction) {
return Math.pow(timeFraction, 2);
},
draw: function(progress) {
brick.style.left = progress * sum + '%';


}
});
};
}
</script>
Ответить с цитированием
  #9 (permalink)  
Старый 27.12.2015, 13:13
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

var balanc = 20;
var gamebalanc = 3819430;
var balanc = Number(balanc);
var gamebalanc = Number(gamebalanc);
var bits = document.getElementById("bits").value;
var stav = document.getElementById("stav").value;

var bits = +document.getElementById("bits").value;
var stav = +document.getElementById("stav").value;

var newuserbal = balanc + resbits;
var newgamebal = gamebalanc - resbits;


balanc += resbits;
gamebalanc -= resbits;

и оперировать balanc и gamebalanc.
Ответить с цитированием
  #10 (permalink)  
Старый 27.12.2015, 13:23
Аспирант
Отправить личное сообщение для serebann Посмотреть профиль Найти все сообщения от serebann
 
Регистрация: 22.12.2015
Сообщений: 38

Сообщение от laimas Посмотреть сообщение
var balanc = 20;
var gamebalanc = 3819430;
var balanc = Number(balanc);
var gamebalanc = Number(gamebalanc);
var bits = document.getElementById("bits").value;
var stav = document.getElementById("stav").value;

var bits = +document.getElementById("bits").value;
var stav = +document.getElementById("stav").value;

var newuserbal = balanc + resbits;
var newgamebal = gamebalanc - resbits;


balanc += resbits;
gamebalanc -= resbits;

и оперировать balanc и gamebalanc.
Так не работает у меня
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамически поменять сложение на вычитание zhurchik Общие вопросы Javascript 4 06.06.2015 13:51
Подгрузить несколько значения с php файла в разные места документа serdef Элементы интерфейса 2 30.07.2014 23:48
Разные значения в зависимости от опций Batyabest Events/DOM/Window 28 26.11.2013 19:40
Разные значения clientWidth в ie и ff SILVERSPEED Events/DOM/Window 6 20.04.2010 01:11