Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从另一个函数调用javascript函数无效_Javascript_Jquery - Fatal编程技术网

从另一个函数调用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);
}