函数参数未定义

时间:2017-09-28 11:45:52

标签: javascript jquery

大家好,我的代码没有什么问题。 Exacly,我写了函数来计算divHeight + margin。看起来像这样

function mathMargin(divClass) {
    divClass = "'."+divClass+"'";
    divHeight = $(divClass).outerHeight(true);
    margin = divHeight * 0.3;
    result = divHeight + margin;
    return result;
}

我试过像这样的调用函数

alert(mathMargin(flatbox-title));

但是不起作用,控制台返回“flatbox”没有定义。怎么了?

5 个答案:

答案 0 :(得分:3)

您应该将参数作为string传递。

alert(mathMargin('flatbox-title'));

在您编写解释器时,会将参数视为数学减法的结果。 (flatbox - title)。

此外,您不需要函数第一行的inner quotes。请改用:

divClass = '.' + divClass;

答案 1 :(得分:1)

flatbox-title不是变量,它是一个字符串。你需要用引号括起来。

alert(mathMargin('flatbox-title'));

答案 2 :(得分:1)

作为Alexandru-lonut Mihai和Manav答案的替代方案,您也可以传递元素:

function mathMargin(div) {
    divHeight = div.outerHeight(true);
    margin = divHeight * 0.3;
    result = divHeight + margin;
    return result;
}

alert(mathMargin( $('.flatbox-title) ));

答案 3 :(得分:0)

<强>误

  • divClass =“'。”+ divClass +“'”;这将创建单引号 串。检查你自己在控制台。
  • 在调用函数时为你的参数添加双引号 发送

function mathMargin(divClass) {
    divClass = "."+divClass;
    divHeight = $(divClass).outerHeight(true);
    margin = divHeight * 0.3;
    result = divHeight + margin;
    return result;
}
alert(mathMargin('flatbox-title'));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


<div class="flatbox-title">fa
faww
fwafaw
fawfa
w</div>

答案 4 :(得分:0)

Interpreter将flatbox-title视为变量,而不是字符串('flatbox-title'),因为您没有声明这样的变量,所以会抛出异常。

另一方面,为什么简单的代码过于复杂?考虑将其重写为:

function mathMargin(divClass) {
    var divHeight = $("."+divClass).outerHeight(true);
    return divHeight * 1.3;
}

请注意,您在变量之前忘记了var关键字。不确定它是否有意,但通常你应该避免这样做,因为没有它,将创建全局变量。这可能会在以后导致一些令人讨厌的错误......