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