Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.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,我试图将一个变量传递给一个函数,我相信该函数调用了另一个函数(我想),但遇到了问题。我需要在第二个函数中使用的变量是productid,但我尝试过的几种方法都不起作用。用javascript或Jquery进行修复都会很好 这是我需要变量的行 var error_url = '/ProductDetails.asp?ProductCode' + productid; 这就是变量的来源 var productid = form.elements['ProductCode'].value; 下面

我试图将一个变量传递给一个函数,我相信该函数调用了另一个函数(我想),但遇到了问题。我需要在第二个函数中使用的变量是productid,但我尝试过的几种方法都不起作用。用javascript或Jquery进行修复都会很好

这是我需要变量的行

var error_url = '/ProductDetails.asp?ProductCode'  + productid;
这就是变量的来源

var productid = form.elements['ProductCode'].value;
下面是整个js代码

function addToCart2(form, button) {
var softAdd = true;
var productid = form.elements['ProductCode'].value;

      var qstr;
  var bttnName = button.name;
    button.disabled = true;
    if (form.elements['ReturnTo']) {
        form.elements['ReturnTo'].value = "";
    }
    qstr = serialize(form, bttnName + '.x', '5', bttnName + '.y', '5');
            sendAjax('POST','/ProductDetails.asp?ProductCode=' + productid  + '&AjaxError=Y', qstr , retrieveProductError2 ,displayServerError,false);
    button.disabled = false;
            return false;
        }
function retrieveProductError2(result, statusCode) {
var ele = document.getElementById('listOfErrorsSpan');
var errorIndex = result.indexOf('<carterror>');
var productIndex = result.indexOf('<ProductIndex>')
if (errorIndex > -1 && productIndex == -1)  {
var error_url = '/ProductDetails.asp?ProductCode'  + productid;
window.location = error_url;
} 
if (errorIndex != -1) {
    //ele.innerHTML = result.slice(errorIndex + 11, result.indexOf('</carterror>'));
}
else {
    ele.innerHTML = "";
    if (productIndex == -1) {
    sendAjax('GET','/AjaxCart.asp?GetIndex=True', '', showCart, null, false);
    }
    else {
    productIndex = result.slice(productIndex + 14, result.indexOf('</ProductIndex>'));
    sendAjax('GET','/AjaxCart.asp?Index=' + productIndex, '', showCart, null, false);
    }
}
函数addToCart2(表单、按钮){
var softAdd=true;
var productid=form.elements['ProductCode'].value;
var-qstr;
var bttnName=button.name;
button.disabled=true;
if(form.elements['ReturnTo']){
form.elements['ReturnTo'].value=“”;
}
qstr=序列化(形式为bttnName+'.x',5',bttnName+'.y',5');
sendAjax('POST','/ProductDetails.asp?ProductCode='+productid+'&AjaxError=Y',qstr,retrieveProductError2,displayServerError,false);
button.disabled=false;
返回false;
}
函数检索ProductError2(结果、状态代码){
var ele=document.getElementById('listOfErrorsSpan');
var errorIndex=result.indexOf(“”);
var productIndex=result.indexOf(“”)
如果(errorIndex>-1&&productIndex==-1){
var error_url='/ProductDetails.asp?ProductCode'+productid;
window.location=错误\ url;
} 
如果(错误索引!=-1){
//ele.innerHTML=result.slice(errorIndex+11,result.indexOf(“”));
}
否则{
ele.innerHTML=“”;
如果(productIndex==-1){
sendAjax('GET','/AjaxCart.asp?GetIndex=True','',showCart,null,false);
}
否则{
productIndex=result.slice(productIndex+14,result.indexOf(“”));
sendAjax('GET','/AjaxCart.asp?Index='+productIndex',showCart,null,false);
}
}

}

最简单的方法是将变量声明移到方法之外。因此,在addToCart2方法之外更改产品id的声明。因此,在该方法之外,您可以执行以下操作:

var product_id;

然后在您的方法内部,从product_id中删除var,它将只是一个赋值,而不是声明。

最简单的方法是将变量声明移到方法外部。因此,在addToCart2方法之外更改产品id的声明。因此,在该方法之外,您可以执行以下操作:

var product_id;

然后在方法内部从product_id中删除var,它将只是一个赋值,而不是声明。

如果传入retrieveProductError2作为sendAjax调用的错误回调,则可以传入:

function(result, statusCode) { retreiveProductError2(result, statusCode, productId);}

然后更改retrieveProductError2函数的定义以接受附加参数。

如果传入retrieveProductError2作为sendAjax调用的错误回调,则可以传入:

function(result, statusCode) { retreiveProductError2(result, statusCode, productId);}

然后更改retreiveProductError2函数的定义以接受附加参数。

这样做有效,但由于使用了全局变量,因此是一种非常糟糕的编程风格。此外,当同时调用多个ajax调用时,可能会导致副作用。因为ajax是异步的,所以这很难防止。@txwikinger我同意。这只是一个让他继续前进的简单方法。这是可行的,但因为它使用全局变量是一种非常糟糕的编程风格。此外,当同时调用多个ajax调用时,可能会导致副作用。因为ajax是异步的,所以这很难防止。@txwikinger我同意。这只是让他继续前进的一个简单方法。我听不懂你的回答,你能解释一下吗?在第12行,你调用
sendAjax
…其中一个参数是
retrieveProductError2
。用我上面给出的代码替换它。然后,将第16行更改为读取
函数retrieveProductError2(结果、状态代码、产品ID){
。然后您可以访问retrieveProductError2函数中的productId变量。并确保您正确拼写retrieve-与我不同:)哇,这很有魅力!!!在您的示例中,必须将变量名称更改为productId,而不是productId,但它很有效!!!您爸爸!!!您能解释一下吗,因为我很难理解在第12行,您调用
sendAjax
…其中一个参数是
retrieveProductError2
。将其替换为我上面给出的代码。然后,将第16行改为
函数retrieveProductError2(结果、状态码、产品ID){
。然后,您就可以访问retrieveProductError2函数中的productId变量。并确保您正确拼写retrieve-不像我:)哇,这就像一个符咒!!!在您的示例中,必须将变量名称更改为productId,而不是productId,但它是有效的!!!你这个男人!!!