javascript - 将变量传递给javascript中的函数

标签 javascript jquery

我不确定我的代码有什么问题。我一直在为 maxLength 获取一个 NaN 变量。我是否正确地编写了这个函数?

我正在尝试调用的辅助函数:

(function($) {
    $.fn.countRemainingCharactersHelper = function(maxLength) {
        id = this.attr('id');
        var textLength = this.val().length;
        var textRemaining = maxLength - textLength;

        if (textLength >= maxLength) {
            textRemaining = 0;
        }

        var messageId = id.slice(0, (id.indexOf('someTxtBox'))) + 'someTxtBox';
        $('#' + messageId).html(textRemaining + ' characters remaining.');
    };
})(jQuery);

调用上面辅助函数的函数:

function countRemainingCharacters() {
    $(this).countRemainingCharactersHelper(1000);
}

function countRemainingCharacters(maxLength) {
    $(this).countRemainingCharactersHelper(maxLength);
}

调用传入 maxLength 变量的函数

$('#samplesomeTxtBox').click(function() {
    countRemainingCharacters(4000);
});

最佳答案

this 将引用 countRemainingCharacters() 函数中的 window,因为您没有使用作用域调用它。您可以使用 call() 解决这个问题:

$('#samplesomeTxtBox').click(function() {
    countRemainingCharacters.call(this, 4000);
})

另请注意,用于生成放置消息的元素的 id 的逻辑有点不对劲。您可以通过使用 data 属性显式设置元素 ID 来改进它。

在这种情况下,您的重载方法也是多余的,因为如果没有提供,您可以利用 JavaScript 的“虚假”逻辑来提供默认值。这意味着您可以将两个 countRemainingCharacters() 函数转换为一个:

function countRemainingCharacters(maxLength) {
    $(this).countRemainingCharactersHelper(maxLength || 1000);
}

Working example

此时剩下的就是创建一个键事件处理程序来计算用户键入的剩余字符。

关于javascript - 将变量传递给javascript中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38227452/

相关文章:

javascript - 如何根据数组更新复选框状态?

javascript - Vite中如何将静态文件夹同时复制到 "dev"和 "build"?

javascript - 是否可以在图像的特定点上设置事件?

jquery - 如何使用 jquery 根据另一个下拉列表的选择来更改下拉列表值

不同事件类型上的 Javascript 事件 stopPropagation

javascript - 日期选择器作为倒计时的输入

javascript - 将数据从 localStorage 保存到 csv

javascript - 运行快车路线

javascript - 克隆 div 并删除类而不更改原始类

javascript - 无法按顺序触发两个 jQuery ajax 调用