27.12.2015, 11:28
|
Аспирант
|
|
Регистрация: 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>
|
|
27.12.2015, 11:41
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от serebann
|
Подскажите, почему при вычитание (-) всё срабатывает правильно
А при сложении (+) просто прибавляется ещё одно число к существующему.
|
Потому, что значение поля, это строка, а + в JS не только складывает, но и является операцией конкатенации строк.
Либо var bits = parseInt(document.getElementById("bits").value);, либо var bits = +document.getElementById("bits").value;
|
|
27.12.2015, 11:55
|
Аспирант
|
|
Регистрация: 22.12.2015
Сообщений: 38
|
|
Попробовал оба варианта и история та же.
Если я правильно понял нужно было заменить вот эту строчку
var bits = document.getElementById("bits").value;
на один из этих вариантов.
Либо var bits = parseInt(document.getElementById("bits").value);, либо var bits = +document.getElementById("bits").value;
Помогите пож.
|
|
27.12.2015, 12:06
|
Аспирант
|
|
Регистрация: 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.
|
|
27.12.2015, 12:10
|
Профессор
|
|
Регистрация: 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) //сложение, ибо числа
|
|
27.12.2015, 12:18
|
Аспирант
|
|
Регистрация: 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
|
|
27.12.2015, 12:56
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Ну так перезаписывайте balance и gamebalance новыми значениями.
|
|
27.12.2015, 13:02
|
Аспирант
|
|
Регистрация: 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>
|
|
27.12.2015, 13:13
|
Профессор
|
|
Регистрация: 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.
|
|
27.12.2015, 13:23
|
Аспирант
|
|
Регистрация: 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.
|
Так не работает у меня
|
|
|
|