Javascript:调用其他函数里面的函数不起作用?

时间:2013-10-16 14:49:03

标签: javascript jquery function runtime-error object-expected

所以在我的<script>标签中,我有这些功能。

$.fn.getRandom = function(min, max) {
    return min + Math.floor(Math.random() * (max - min + 1));
}

function placeRandom() {
    alert(getRandom(1,7));
}

我调用placeRandom()函数就像这样

$(document).ready(function() {
    placeRandom();
});

当我这样做时,它给了我一个

Object expected

错误并指的是我写的行

alert(getRandom(1.7));

现在,我的主要问题是,如果我向您展示的代码有什么问题,或者它看起来是否正确?因为如果它看起来正确那么我认为我将不得不运行我的整个代码的其余部分,并寻找一个未关闭的开放式括号,因为这可能是问题所在。所以,我的placeRandom()或getRandom()函数有什么问题,还是因为除了这些函数之外的其他原因而发生错误?

3 个答案:

答案 0 :(得分:2)

问题是你是在定义getRandom函数。您将它放在jQuery.fn命名空间中。如果您按照以下方式组织代码,它应该可以更好地工作。

var getRandom = function(min, max) {
    return min + Math.floor(Math.random() * (max - min + 1));
}

var placeRandom = function() {
    alert(getRandom(1,7));
}

$(document).ready(function() {
    placeRandom();
});

其他信息: jQuery.fn实际上是prototype,但在这个特定的上下文中通常被称为命名空间。

答案 1 :(得分:1)

您正在将getRandom绑定到jQuery名称空间,您只能通过jQuery对象实例或通过$.fn.getRandom()

访问它

因此,除非您希望能够像$(selector).getRandom()一样调用它,否则只需将其声明为标准函数。

答案 2 :(得分:1)

您将getRandom绑定到$ namespace(jQuery)。所以你必须调用它$.fn.getRandom(1,7)或定义以下函数:

function getRandom(min, max) {
    return min + Math.floor(Math.random() * (max - min + 1));
}