我创建了一个这样的函数:
window.SetUploader = function(action, elementID, multiple, allowedExtensions) {
//Optional arguments
if (actionUploader == null) {
actionUploader = "/Upload";
}
if (elementIDUploader == null) {
elementIDUploader = "file-uploader";
}
if (multipleUploader == null) {
multipleUploader = false;
}
if (allowedExtensions == null) {
allowedExtensions = [];
}
//Function
.....
};
要调用此函数,请使用以下代码:
SetUploader('/Projects/ImageUpload', 'Logo', { allowedExtensions: ['jpg', 'jpeg', 'png', 'gif', 'zip'] });
请注意参数allowedExtensions
,它不会更改值。
调试功能,allowedExtensions
值 null 。
有什么问题?
答案 0 :(得分:1)
您正在传递实际的allowedExtendsions
参数作为第三个参数,即multiple
形式参数出现的位置。把undefined
放在它前面。
SetUploader(
/* action */ '/Projects/ImageUpload',
/* elementId */ 'Logo',
// NEED VALUE FOR MULTIPLE HERE
['jpg', 'jpeg', 'png', 'gif', 'zip'])
您也从不使用action
参数,而是检查并设置全局变量actionUploader
。
通常,当允许可选参数时,您有一个特定参数,这是一个额外参数的映射。
function (requiredParam, anotherRequiredParam, extra) {
var optionalParam = extra ? extra.optionalParamName : defaultValue;
...
}
答案 1 :(得分:1)
您将对象作为第三个参数传递(多个),您的allowedExtensions是第四个。
您还要检查带有“Uploader”的变量作为名称后缀。它们不是你传递的变量。
接下来,如果您将{ allowedExtensions: ['jpg', 'jpeg', 'png', 'gif', 'zip'] }
作为第四个参数传递以获取包含扩展名的数组,则必须编写allowedExtensions.allowedExtensions
答案 2 :(得分:1)
首先,您的变量不为空,它们未定义,您需要使用===
运算符进行检查。
undefined和null不相同,JavaScript中具有声明但未初始化的变量具有undefined值。
使用===
运算符,您可以使用JavaScript检查您要比较的类型和值。如果您只使用==
运算符,JavaScript将尝试键入转换您的变量:
if (allowedExtensionsUploader == null)
进入这个:
if (false == false)
可能会导致问题。
其次,你只为你的函数提供三个参数,但你要问的是第四个参数。
第三,第四个参数叫做 allowedExtensions ,但是你正在检查一个名为 allowedExtensionsUploader 的变量。
第四,我认为您应该使用jslint来检查您的代码。它会告诉你很多我刚刚写的东西=)
答案 3 :(得分:0)
由于您将其作为参数multiple
传递,因为它是第三个参数。
在JavaScript中,您无法使用命名参数。
{ allowedExtensions: ['jpg', 'jpeg', 'png', 'gif', 'zip'] }
对象是否具有属性allowedExtensions
初始化为数组。
答案 4 :(得分:0)
undefined
,而不是null
。===
,而不是==
。请改用:
window.SetUploader = function(actionUploader, elementIDUploader, multipleUploader, allowedExtensionsUploader) {
//Optional arguments
if (actionUploader === undefined) {
actionUploader = "/Upload";
}
if (elementIDUploader === undefined) {
elementIDUploader = "file-uploader";
}
if (multipleUploader === undefined) {
multipleUploader = false;
}
if (allowedExtensionsUploader === undefined) {
allowedExtensionsUploader = [];
}
};
SetUploader('/Projects/ImageUpload', 'Logo', undefined, ['jpg', 'jpeg', 'png', 'gif', 'zip']);
答案 5 :(得分:0)
你在函数调用
中只传递了三个参数参数
{ allowedExtensions: ['jpg', 'jpeg', 'png', 'gif', 'zip'] }
是一个JSON对象,可在“多个”变量
中使用尝试在函数调用中再添加一个参数,您将获得该值作为第4个参数“allowedExtensions”