Javascript:在另一个函数中调用函数不起作用

Javascript: calling function inside another function not working?

本文关键字:函数 不起作用 调用 另一个 Javascript      更新时间:2023-09-26

所以在我的<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() 函数是否有任何问题,或者错误是由于这些函数以外的其他原因而发生的?

问题是你正在定义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 实际上是一个原型,但在此特定上下文中通常被称为命名空间。

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

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

您将getRandom绑定到 $ 命名空间 (jQuery)。 因此,您必须将其调用$.fn.getRandom(1,7)或按以下方式定义函数:

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