2015-01-28 2 views
0

Привет всем и спасибо за любую помощь заранее,как отключить функцию onclick, если она меньше другой переменной?

У меня есть некоторые функции уже на месте, сначала добавляется 1% от общей суммы денег один раз в секунду. второй - onclick, добавляется 100 долларов к общей первоначальной сумме. Третий - минус 200 долларов плюс 10% от 200 от общей суммы, поэтому каждый раз, когда нажимается, увеличивается минус. Эти функции работают на моей локальной машине, но я не могу заставить их работать в JSFIDDLE.

Я хочу отключить кнопку «минус», если общая сумма меньше суммы минус, а также включить ее снова, когда в общей сумме будет достаточно денег.

Вот мой JS до сих пор

setInterval(function() { 
    var moneyTotal = document.getElementById('money-total').innerHTML; 
    var perSec = (1/100) * moneyTotal; 
    var moneyNewTotal = (+moneyTotal) + (+perSec); 
    document.getElementById('money-total').innerHTML = (moneyNewTotal.toFixed(2)); 
    document.getElementById('per-second').innerHTML = (perSec.toFixed(2)); 
}, 1000); 

function add() { 
    var addAmount = 100; 
    var moneyTotal = document.getElementById('money-total').innerHTML; 
    var addTotal = (+addAmount) + (+moneyTotal); 
    document.getElementById('money-total').innerHTML = (addTotal.toFixed(2)); 
} 

function minus() { 
    var cost = document.getElementById('cost').innerHTML; 
    var money = document.getElementById('money-total').innerHTML; 
    if (money > cost) { 
     var moneyNewTotal = (+money) - (+cost); 
     var newCost = (10/100) * cost; 
     var costTotal = (+newCost) + (+cost); 
     document.getElementById('cost').innerHTML = Math.ceil(costTotal); 
     document.getElementById('money-total').innerHTML = (moneyNewTotal.toFixed(2)); 
    } else { 
     alert("Not enough money"); 
    } 
} 

Любая помощь будет принята с благодарностью!

+0

Почему бы не поставить условие внутри функции минус, которое применяет только новое значение, если (минус> = общий), так что вы не включаете/не блокируете события. – atmd

+0

Я устал, но это даст ложные истины, и я могу Подумайте, почему. см. мой обновленный код для моей попытки сделать это. – Amir5000

ответ

1

Во-первых, скрипт не работает, потому что он установлен для загрузки вашего javascript onLoad, который обертывает ваши функции в другой области и поэтому они недоступны в окне. Изменение его для загрузки javascript No wrap - in <head> (или <body>) поможет ему работать.

Тогда вам нужно иметь что-то, что проверяет значение и разрешает отключение кнопки «минус».

function checkTotal() { 
    var moneyTotal = +document.getElementById('money-total').innerHTML; 
    var cost = +document.getElementById('cost').innerHTML; 
    if (cost > moneyTotal) { 
     document.getElementById('minus').setAttribute('disabled', 'disabled');  
    } else { 
     document.getElementById('minus').removeAttribute('disabled');  
    } 
} 

Затем вам нужно будет назвать это в конце add, minus, и даже функция, которую вы определили в setInterval, так что, как будет добавлен деньги он проверяет. Этот код только добавляет к кнопке атрибут disabled, поэтому любой стиль нужно будет обрабатывать либо кодом, либо через CSS, и устанавливать/удалять имена классов или что-то подобное.

Возможно, существуют различные способы сделать это путем привязки данных или использования модели событий как части структуры, но это более существенная тема, которая не может быть действительно рассмотрена в этом ответе.

+0

Вау, так что же добавляет + перед document.getElementById ('money-total'). InnerHTML do? Это фиксировало мои случайные результаты. – Amir5000

+0

Обычно я предлагаю использовать 'parseInt', но так как вы использовали этот шаблон, я уже застрял в нем - по сути, он заставляет код отличать значение' innerHTML' к 'Number', так как в противном случае это' String'. – lemieuxster

+0

Да, имеет смысл, спасибо за помощь, я застрял на этой части, и теперь я золотой. Благодаря! – Amir5000

Смежные вопросы