我不确定我的代码有什么问题。我一直在为 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);
}
此时剩下的就是创建一个键事件处理程序来计算用户键入的剩余字符。
关于javascript - 将变量传递给javascript中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38227452/