gpt4 book ai didi

javascript - 未捕获的类型错误 : object is not a function

转载 作者:行者123 更新时间:2023-11-30 05:51:51 24 4
gpt4 key购买 nike

我在我正在处理的网站上使用 require,在处理结帐时,我遇到并发出了问题。我正在尝试更改信用卡图像以显示已激活的卡号,无论他们输入的卡号是什么。

但是,每次按下一个键,我都会得到这个错误:

Uncaught TypeError: object is not a function 

它说它来 self 的“ Controller ”的第 12 行,即:

var chkCard = new CreditImage($(this).val(), '.icon-credit-cards');

未捕获的类型错误:对象不是函数(重复 3 次)

这是我的“演示者”,又名 assets/scripts/presenters/CreditImage.js

require(
[
'jquery'
],
function ($) {
"use strict";

var CreditImage = function ($number, $el) {
// Match and define
var visa = $number.match(/^4[0-9]{12}(?:[0-9]{3})?$/);
var mastercard = $number.match(/^5[1-5][0-9]{14}$/);
var amex = $number.match(/^3[47][0-9]{13}$/);
var discover = $number.match(/^6(?:011|5[0-9]{2})[0-9]{12}$/);
var matched;

// Create matched var
if (visa) {
matched = "visa";
} else if (mastercard) {
matched = "mastercard";
} else if (amex) {
matched = "amex";
} else if (discover) {
matched = "discover";
}

if (matched) {
// Highlight the matched credit card
$("."+$el+":not("+$el+"-" + matched + ")").addClass($el);
$("."+$el).addClass($el+"-" + matched);
} else {
// No match, highlight them all
$(".+$el).removeClass().addClass($el);
}

return matched;
}
}
);

这里是“ Controller ”:

require(
[
'jquery',
'assets/scripts/presenters/CreditImage'
],
function ($, CreditImage) {
'use strict';
$(function () {
// Credit card validation
$("#add-cc-card-number").bind("keyup", function () {

var chkCard = new CreditImage($(this).val(), 'icon-credit-cards'));

});

});
}
);

最佳答案

我发现有两个问题,任何一个都足以阻止您的代码正常工作。

范围界定问题#1

CreditImage() 对于在其中声明的匿名函数是私有(private)的。现在,老实说,我对 requirejs 了解不多,但是不可能从其父函数外部访问这样一个局部作用域的函数。

您需要检查 requirejs 代码的示例,以了解其他人如何将他们的函数设计为可在单独的 requirejs 调用之间调用(或者他们可能以某种方式只使用一个调用?)。或者也许可以找到一些好的教程或博客文章。

无论如何,你现在的方式是行不通的。

范围界定问题#2

您的第二个代码块将 CreditImage 作为参数。这意味着在函数内部,对该名称的引用将始终引用参数,并且永远不能引用任何外部作用域的函数或变量。再一次,我不熟悉 requirejs,但你确定它正在将 CreditImage 函数传递到 CreditImage 参数中吗?

使用 Chrome 或使用安装了 Firebug 的 Firefox,将 console.log(CreditImage); 添加到您的较低函数中以查看传入的内容。至少在 Windows 中,F12 会调出调试工具.从那里找到控制台并运行您的代码。

关于javascript - 未捕获的类型错误 : object is not a function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14245531/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com