1

我试图获得浏览器窗口宽度的结果,并试图将数学和条件的结果放入变量中,这是代码

var MyWidth = 1900;
var MyHeight = 900;
var height = $(window).height();
var width = $(window).width();

var AutoW = function () {
    if ( (MyWidth / width).toFixed(2) > 0.95 )
          return 1;
    if ( (MyWidth / width).toFixed(2) < 1.05 )
          return 1;
    else return (MyWidth / width).toFixed(2);
     };


alert(AutoW);

问题是我不知道分配给变量的函数的正确语法或结构

什么是正确的编码方式?

4

4 回答 4

2

alert(AutoW());

AutoW()返回分配给变量的函数的值。

小提琴:http: //jsfiddle.net/V2esf/

于 2013-05-13T07:02:59.677 回答
1
var AutoW = function () {
    // don't calculate ratio 3 times! Calculate it once
    var ratio = (MyWidth / width).toFixed(2);
    if (ratio > 0.95)
          return 1;
    if (ratio < 1.05)
          return 1;
    else return ratio;
};


// alert(AutoW); - this was a problem, AutoW is a function, not a variable
// so, you should call it
alert(AutoW());
于 2013-05-13T07:04:57.910 回答
1
<script>
    var MyWidth = 1900;
    var MyHeight = 900;
    var height = $(window).height();
    var width = $(window).width();

    var AutoW = function () {
        if ((MyWidth / width).toFixed(2) > 0.95)
            return 1;
        if ((MyWidth / width).toFixed(2) < 1.05)
            return 1;
        else return (MyWidth / width).toFixed(2);
    };

    var val = AutoW();
    alert(val)
</script>
于 2013-05-13T07:05:34.013 回答
1

你应该这样尝试:

(function(){

var MyWidth = 1900,
MyHeight = 900,
height = $(window).height(),
width = $(window).width(),
result;

var AutoW = function () {
    var rel = (MyWidth / width).toFixed(2);
    return ( ( rel > 0.95 ) && ( rel < 1.05 )) ? 1 : rel;
};

result = AutoW();

alert(result);

})();

但请记住,您编写的函数总是返回 1,这就是为什么我将其更改为 (&&) 条件以使其成为过滤器。

如果您对功能进行警报,您将返回整个功能。您必须将函数“()”的强制转换分配给变量,以便将返回分配给它。

var result = f_name();

请记住,尽量不要使用全局变量,将所有内容包装在一个函数中。

您应该将 {} 放在 if 之后,并缓存您多次使用的值,例如我将“(MyWidth / width).toFixed(2)”缓存到 rel 时。

我使用的 sintax 而不是 if >> (condition) ?(如果匹配则返回):(否则返回);

于 2013-05-13T07:13:43.410 回答