在变量或对象中存储值时,Javascript错误的计算

时间:2014-11-08 20:46:01

标签: javascript jquery css html5 slider

我正在尝试使用滑块在HTML布局中设置相关列的宽度。

在这段代码中,一切都很好用,在这里我为slide-UP上的另一列获取新值。

var item.thisWidth; // current width of edited column
var item.prevCellWidth; // current width of previus/last column

FDD

if(slider.value > item.thisWidth){
     var prevNewWidth = item.prevCellWidth - (slider.value-item.thisWidth);        
     $('#r'+item.thisRowId+'s'+item.prevCellRowOrder+'').css('width', prevNewWidth + '%');
}   

但是在下滑计算之后,这里发生了一些奇怪的事情。创建的价值为数十万。 需要记住的是,滑块最小/最大值是0-100

“slider.value”

if(slider.value < item.thisWidth){

    var prevNewWidth = item.prevCellWidth + (item.thisWidth - slider.value);

    $('#r'+item.thisRowId+'s'+item.prevCellRowOrder+'').css('width', prevNewWidth + '%');
}

我试图检查所有传递给计算的值,然后显示确定。

alert('oldWidth'+item.thisWidth+'sliderWidth'+slider.value+'previuscell'+item.prevCellWidth+'');

但是当减少滑块时,我得到了这些错误的结果

e.g. 30 + (40 - 10) = 400000;  ??

更新:

使用@ rogelio的建议对此进行排序 - 将字符串解析为整数:

var integer = parseInt(string);

谢谢,@ rogelio!

2 个答案:

答案 0 :(得分:1)

问题是因为slider.value是一个字符串。假设您从输入中获取值,则需要将其解析为整数。使用javascript是微不足道的,例如你的行

var prevNewWidth = item.prevCellWidth + (item.thisWidth - slider.value);

需要改为

var prevNewWidth = item.prevCellWidth + (item.thisWidth - parseInt(slider.value));

答案 1 :(得分:0)

我研究自己,所以对于像这样的简单事情,有时候我可以花一些时间没有人指导我找到正确的信息。

parseInt函数(值);这是我更新的问题和答案:)

 function handleSliderChange(event, slider){
     $('#r'+item.thisRowId+'s'+item.thisRowOrder+'').css('width', slider.value + '%');

     var sliderValue = parseInt(slider.value);
     var oldValue = item.thisWidth;
     var oldPrevValue = item.prevCellWidth;
     if(sliderValue > oldValue){
        var prevNewWidth = oldPrevValue - (sliderValue-oldValue);        
        $('#r'+item.thisRowId+'s'+item.prevCellRowOrder+'').css('width', prevNewWidth + '%');

        }
      if(''+slider.value+'' < ''+item.thisWidth+''){
        var prevNewWidth = oldPrevValue + (oldValue - sliderValue);

        $('#r'+item.thisRowId+'s'+item.prevCellRowOrder+'').css('width', prevNewWidth + '%');}
         if(''+slider.value+'' == ''+item.thisWidth+''){
            var prevNewWidth = sliderValue;

        $('#r'+item.thisRowId+'s'+item.prevCellRowOrder+'').css('width', prevNewWidth + '%');
         }  }

对于像我这样不喜欢大学或大学的人......总是为数字创建变量,如果数字也添加了parseInt(&#39; value&#39;) - &gt;这应该让你避免常见的错误,节省一些时间:)