我想在另一个函数中定义的函数中使用JsonObject
值,所以我在下面使用它。
function downloadPDF(e) {
setImagesUploadedFile(objValue); // another function
var obj = objValue[0].Filename;
var filePath = SharedFilePath + obj;
$('#ImgSignedDoc').attr('href', filePath);}
这个函数setImagesUploadedFile(objValue);
就像这样
function setImagesUploadedFile(JsonObject) {
for (i = 0; i < JsonObject.length; i++) {
var obj = JsonObject[i].Filename;
var obj2 = "ImgSignedDoc";
var obj3 = JsonObject[i].FileType;
var datafileName = JsonObject[0].ImageName;
var ImgObj = parent.document.getElementById(obj2);
var Filename = datafileName.substring(datafileName.lastIndexOf('//') + 1);
ImgObj.innerText = Filename;
$(ImgObj).attr("data-filename", Filename);
}
}
,它显示的错误是
0x800a1391 - JavaScript运行时错误:&#39; objValue&#39;未定义
那么我应该怎么做或改变才能在我的另一个函数中得到setImagesUploadedFile(objValue)
的参数?
答案 0 :(得分:1)
问题出在您开始之前:objValue
永远不会被声明和填充。
function downloadPDF(e) {
// At this point objValue is undefined
setImagesUploadedFile(objValue); // another function
var obj = objValue[0].Filename;
var filePath = SharedFilePath + obj;
$('#ImgSignedDoc').attr('href', filePath);
}
尝试使用'use strict'
声明来更好地处理错误,因为它会导致未声明的变量引用出错,而不是在使用它时。
我认为您正在尝试将objValue
视为参考 - 适用于编辑但不适用于实例化(JS没有out
参数),因此请改用return:
function downloadPDF(e) {
'use strict';
var json = // However you get your JSON data...
var objValue = setImagesUploadedFile(json);
...
然后,在setImagesUploadedFile
:
function setImagesUploadedFile(jsonObject) {
'use strict';
var result = [];
if(jsonObject) // Check we were passed the object
for (var i = 0; i < jsonObject.length; i++) {
...
var imgObj = ...
// Add the result to the expected output array
result.push(imgObj);
}
// Return the output array
return result;
}
所以,要解决这个问题的步骤:
'use strict';
以获得更好的错误。return
来获取值。最后,作为旁注,JS中的一个约定是将camelCase用于函数和变量,并且只将CapitalCase用于期望用new
调用的类和函数。您不必使用它,但它可以帮助您更轻松地理解代码。
答案 1 :(得分:0)
function downloadPDF(e) {
// objValue is not declared, is this a global variable, if yes then declare it before calling the downloadPDF function.
setImagesUploadedFile(objValue); // another function
var obj = objValue[0].Filename;
var filePath = SharedFilePath + obj;
$('#ImgSignedDoc').attr('href', filePath);
}
var objValue = [];
downloadPDF(e);
或者您可以从您想要的位置获取objValue的值:
var objValue = $("#id or class");
downloadPDF(e);
答案 2 :(得分:0)
在传入函数之前,您需要定义objValue
。
例如:
function downloadPDF(e)
{
var objValue = {key1: value, key2: value};
setImagesUploadedFile(objValue); // another function var obj =
objValue[0].Filename; var filePath = SharedFilePath + obj;
$('#ImgSignedDoc').attr('href', filePath);
}