如何将变量传递给javascript函数?

如何将变量传递给javascript函数?,javascript,jquery,Javascript,Jquery,我有这个功能,工作正常。问题是,当我想将“myObj[x].tipologia”传递给“Abilita”函数时,函数表示“myObj未定义” 函数showTipo(str){ var i=0; $(“#演示”).remove(); ; var obj,dbParam,xmlhttp,myObj,x,t,txt=“”; var prova; //obj={“表”:sel,“限制”:20}; //dbParam=JSON.stringify(obj); xmlhttp=新的XMLHttpReques

我有这个功能,工作正常。问题是,当我想将“myObj[x].tipologia”传递给“Abilita”函数时,函数表示“myObj未定义”

函数showTipo(str){
var i=0;
$(“#演示”).remove();
;
var obj,dbParam,xmlhttp,myObj,x,t,txt=“”;
var prova;
//obj={“表”:sel,“限制”:20};
//dbParam=JSON.stringify(obj);
xmlhttp=新的XMLHttpRequest();
xmlhttp.onreadystatechange=函数(){
if(this.readyState==4&&this.status==200){
美元(“#secondo”)。在(“)之前;
myObj=JSON.parse(this.responseText);
美元(“#演示”).prepend(“Tipologiabilitaazioni”);
对于(myObj中的x){
i=i+1;
如果(myObj[x].tipologia_abilitata!=“2”){
如果(myObj[x].tipologia_abilitata==“1”)
{
myObj[x]。tipologia_abilitata=“ABILITATO”;
}
其他的
{
myObj[x].tipologia_abilitata=“DISABILITATO”;
}
prova=myObj[x].提波罗尼亚;
document.getElementById(“tab”).innerHTML+=“”+myObj[x]。tipologia+“”+myObj[x]。tipologia_Abilita+“Abilita disabilita”;
}}
document.getElementById(“选项卡”).innerHTML+=“”;
}
美元(“#tab”)。之后(“

Aggiungi Tipologia Modifica”); }; open(“POST”,“visualizezacategorie.php”,true); setRequestHeader(“内容类型”,“应用程序/x-www-form-urlencoded”); xmlhttp.send(“Nome_ente=“+str”); }
令人不快的是:

document.getElementById("tab").innerHTML+="<tr><td width='25%' id='cln'>" + myObj[x].tipologia + "</td> <td  width='25%'> "+myObj[x].tipologia_abilitata + "</td> <td width='25%'><button  onClick=Abilita(myObj[x].tipologia)>Abilita </button><button>disabilita</button></td></tr> "; 
document.getElementById(“tab”).innerHTML+=''+myObj[x]。tipologia+''+myObj[x]。tipologia_Abilita+“Abilita disabilita”;
我不明白你为什么能帮我


是否onclick中存在引用错误?

要使onclick属性正常工作,它们引用的函数和参数都必须是全局的。但是在您的情况下,
x
不是全局的

不管怎样,内联处理程序是一种糟糕的做法——它们会导致代码难以管理,比如这里。改为使用Javascript正确附加处理程序,它应该可以正常工作:

const tr = document.getElementById("tab").insertRow();
tr.outerHTML = "<tr><td width='25%' id='cln'>" + myObj[x].tipologia + "</td> <td  width='25%'> "+myObj[x].tipologia_abilitata + "</td> <td width='25%'><button>Abilita </button><button>disabilita</button></td></tr>"; 
tr.querySelector('button').onclick = () => Abilita(myObj[x].tipologia);
const tr=document.getElementById(“tab”).insertRow();
tr.outerHTML=“”+myObj[x]。tipologia+“”+myObj[x]。tipologia_abilitata+“Abilita disabilita”;
tr.querySelector('button').onclick=()=>Abilita(myObj[x].tipologia);

请注意,您将无法分配到容器的
innerHTML
,并在其中保留处理程序-相反,请使用显式创建和附加元素的方法,例如
document.createElement
appendChild

homepagente.php:292未捕获的类型错误:不可能不可能不可能的属性'onclick'di null su XMLHttpRequest.xmlhttp.onreadystatechange。。。。。我复制了代码,但由于这个错误,我只单击了“Abilita”。哦,
#选项卡
不是
。显式地附加表(使用
createElement
/
appendChild
),然后您就可以选择它并
insertRow
。对不起,我真的不知道。你能给我写代码吗。。。很抱歉
const tr = document.getElementById("tab").insertRow();
tr.outerHTML = "<tr><td width='25%' id='cln'>" + myObj[x].tipologia + "</td> <td  width='25%'> "+myObj[x].tipologia_abilitata + "</td> <td width='25%'><button>Abilita </button><button>disabilita</button></td></tr>"; 
tr.querySelector('button').onclick = () => Abilita(myObj[x].tipologia);