parseInt,parseFloat,Number ...我不知道

时间:2009-11-24 17:50:34

标签: javascript

嗨有人知道为什么这个不起作用!!我尝试过各种各样的事。

function loadJcrop(widthN, heightN){
    var run = true;
    if( run === true ) {
        alert(  parseInt(Number(widthN) / Number(heightN)) );
        jQuery(function(widthN, heightN) {
            jQuery('#cropbox').Jcrop({
                onChange: showCoords, onSelect: showCoords, aspectRatio: parseInt(Number(widthN) / Number(heightN))
              });       
        });
    }
}

jQuery(window).load(function() {
    loadJcrop(16, 1);
});

警报返回16但没有!

如果我把

aspectRatio: 16

它有效

任何想法??

1 个答案:

答案 0 :(得分:1)

首先,我会在一个地方进行计算。其次,我认为你的Math.round更好。然而,最重要的是,您在内部函数中使用函数参数,我认为您不想这样做(它将取消设置变量heightN和widthN)。

我会将该函数重写为:

function loadJcrop(widthN, heightN){
    // This is much clearer and easier to understand.
    var current = Math.round( Number(widthN) / Number(heightN) );
    var run = true;
    if( run ) { // if you have a variable which is a Boolean, 
                // you should not use '=='
        alert(  current );
        jQuery(function(/* Note the empty parameters */) {
                jQuery('#cropbox').Jcrop({
                        onChange: showCoords, onSelect: showCoords, aspectRatio: current)
              });       
        });
    }
}