从另一个函数调用javascript函数无效
我想在另一个函数中定义的函数中使用从另一个函数调用javascript函数无效,javascript,jquery,Javascript,Jquery,我想在另一个函数中定义的函数中使用JsonObject值,所以我使用它如下 function downloadPDF(e) { setImagesUploadedFile(objValue); // another function var obj = objValue[0].Filename; var filePath = SharedFilePath + obj; $('#ImgSignedDoc').attr('href', filePath);} 函数setImagesUploaded
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);
}
函数setImagesUploadedFile(JsonObject){
对于(i=0;i
}
它显示的错误是
0x800a1391-JavaScript运行时错误:“objValue”未定义
因此,为了在我的另一个函数中获取setImagesUploadedFile(objValue)
的参数,我应该做些什么或做些什么更改呢???问题是在您开始之前: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
参数),因此请使用返回:
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;
}
函数setImagesUploadedFile(jsonObject){
"严格使用",;
var结果=[];
if(jsonObject)//检查是否传递了对象
for(var i=0;i
因此,解决此问题的步骤如下:
- 添加
“使用严格”代码>以获得更好的错误
- 在使用变量之前先声明它们
- 使用函数中的
return
获取值
最后,作为旁注,JS中有一个约定,即对函数和变量使用camelCase,而对希望使用new
调用的类和函数只使用CAPIALPASE。您不必使用它,但它可以帮助您的代码更容易理解
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);
在传递到函数之前,需要定义objValue
。
例如:
在downloadPDF函数中未定义变量objValue在函数downloadPDF中调用它时,objValue是什么?您在什么地方分配了它吗?您正在传递setImagesUploadedFile(objValue);//objValue作为参数,但未定义
。你到底想要什么?@Hornet:我想在我的downloadPDF
函数中使用JsonObject
的参数,调用setImagesUploadedFile()
返回的值在哪里?那么这是一个怎样的答案呢?我知道错误部分。我应该采取什么步骤来解决这个问题?请suggest@VVVV我猜你对第一次编辑发表了评论?您的基本问题是,objValue
从未声明和填充过-我已经用如何修复的建议充实了答案。获取错误为0x800a138f-JavaScript运行时错误:无法获取未定义或空引用的属性“length”
。我使用了您的最新答案,但出现了错误现在我得到的错误是0x800a1391-JavaScript运行时错误:“JsonObject”未定义
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);
}