当我在控制台或数组中调用它时函数未定义,但在另一个函数中工作?
Function is undefined when I call on it in the console or an array, but works within another function?
所以我在 JavaScript 中编写了一个程序,其中数组中的几个值取决于函数的结果。此函数也在代码的其他地方使用,并且在那里工作正常。
代码看起来像这样:
var Multiplier;
$("#button").on("click", function() { foo(); });
function foo() {
x = document.getElementById("select").value;
setMultiplier(x);
setName(x);
$("#select").hide();
$("#page").show();
}
function setMultiplier(q) {
if (q === "Option 1") {
Multiplier = 1;
return Multiplier;
} else if (q === "Option 2") {
Multiplier = 100;
return Multiplier;
}
}
function mult(base) {
var z;
z = base * Multiplier;
return z;
}
据我所知,我遇到的问题与 setName()
无关,因为该功能工作正常。此外,Multiplier
在其他地方也有适当的价值。但是,当它在程序后面找到的数组中使用时,它给出了 undefined
的值,当我将它输入控制台时,它也显示 Multiplier is not defined
。同样的事情发生在数组和控制台中的 mult()
函数上,但它在其他地方工作正常。我在这里遗漏了什么吗?
编辑:
所以在程序的后面, mult(base)
在两种类型的上下文中被调用:
1. 在一个函数(有效)中,如下所示:
function blah() {
var s = "<div>$" + mult(75) + "</div>";
s += "<div>$" + mult(150) + "</div>";
document.getElementById("mydiv").innerHTML = s;
}
2。在像这样的数组(不起作用)中:
var array = [["String1", mult(60), 0, [mult(2), mult(5)], mult(30)],
["String2", mult(100), 0, [mult(10), mult(25)], mult(50)]];
你可以,而且你是。
问题是您在声明 properties
时仅使用 mult()
调用初始化 properties
一次。 TemplateName
仅在有人点击 UI 后初始化: 在 初始化之前它的值是 null
,这对数字不友好.
JS 不会神奇地返回并重新初始化 properties
,或重新 运行 mult
每次访问它的值时:当您声明 properties
并在声明 properties
时使用 mult
returns 设置所有这些值。
所以我在 JavaScript 中编写了一个程序,其中数组中的几个值取决于函数的结果。此函数也在代码的其他地方使用,并且在那里工作正常。
代码看起来像这样:
var Multiplier;
$("#button").on("click", function() { foo(); });
function foo() {
x = document.getElementById("select").value;
setMultiplier(x);
setName(x);
$("#select").hide();
$("#page").show();
}
function setMultiplier(q) {
if (q === "Option 1") {
Multiplier = 1;
return Multiplier;
} else if (q === "Option 2") {
Multiplier = 100;
return Multiplier;
}
}
function mult(base) {
var z;
z = base * Multiplier;
return z;
}
据我所知,我遇到的问题与 setName()
无关,因为该功能工作正常。此外,Multiplier
在其他地方也有适当的价值。但是,当它在程序后面找到的数组中使用时,它给出了 undefined
的值,当我将它输入控制台时,它也显示 Multiplier is not defined
。同样的事情发生在数组和控制台中的 mult()
函数上,但它在其他地方工作正常。我在这里遗漏了什么吗?
编辑:
所以在程序的后面, mult(base)
在两种类型的上下文中被调用:
1. 在一个函数(有效)中,如下所示:
function blah() {
var s = "<div>$" + mult(75) + "</div>";
s += "<div>$" + mult(150) + "</div>";
document.getElementById("mydiv").innerHTML = s;
}
2。在像这样的数组(不起作用)中:
var array = [["String1", mult(60), 0, [mult(2), mult(5)], mult(30)],
["String2", mult(100), 0, [mult(10), mult(25)], mult(50)]];
你可以,而且你是。
问题是您在声明 properties
时仅使用 mult()
调用初始化 properties
一次。 TemplateName
仅在有人点击 UI 后初始化: 在 初始化之前它的值是 null
,这对数字不友好.
JS 不会神奇地返回并重新初始化 properties
,或重新 运行 mult
每次访问它的值时:当您声明 properties
并在声明 properties
时使用 mult
returns 设置所有这些值。