2013-04-08 4 views
0

У меня есть две переменные в функции: $ x = -660px и фиксирована, а $ y уменьшается на 20 пикселей каждый раз, когда вызывается функция. $ y = 220px при первом вызове функции.
В функции я получил, если другое заявлениеОператор JQuery if с отрицательными и положительными значениями

if($y > $x){ 
    //do something 
    }else{ 
    //do nothing 
    } 

То, что я пытаюсь получить для $ у сокращаться до тех пор, как его больше, чем -660px, а затем остановиться.

он отлично работает до $ y = -20px. то есть. оператор if делает что-то до $ y = -20px, а затем останавливается, но не выполняет оператор else.

Я не могу понять, что с этим не так. Является ли это правильным или может возникнуть моя проблема из другого места?


+3

Вам нужно размещать больше кода. Код, который вы * опубликовали, не продемонстрировал бы эту проблему. Чтобы дать людям наилучшую возможность помочь вам, я настоятельно рекомендую вам создать [JSFiddle] (http://jsfiddle.net), демонстрирующий вашу проблему. –

+0

он должен выполнить, можете ли вы опубликовать больше кода, чтобы увидеть, является ли проблема чем-то еще? – theshadowmonkey

+0

Вы сравниваете строки с 'px' в них или цифрами? Показать больше кода и создать демоверсию, которая реплицирует проблему – charlietfl

ответ

1

Если это не будет if($y < $x), так как они отрицательные значения?

Это работает:

$(function(){ 
    var x=0,y=-660; 
    var inter = setInterval(function(){ 
     if(y < x) 
      subtract(); 
     else 
      clearInterval(inter); 
    },200); 
    function subtract(){ 
     x = x-20; 
     $('body').append('<br />x='+x+' y='+y); 
    } 
}); 

DEMO

Работа со значениями точек:

$(function(){ 
    var x="0px",y="-660px"; 
    var inter = setInterval(function(){ 
     if(parseInt(y) < parseInt(x)) 
      subtract(); 
     else 
      clearInterval(inter); 
    },200); 
    function subtract(){ 
     x = (parseInt(x)-20)+"px"; 
     $('body').append('<br />x='+x+' y='+y); 
    } 
}); 

DEMO

+0

Спасибо, silentw, добавив 'parseInt()' в сделал трюк! – user2220785

+0

Без проблем :)/15chars – silentw

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