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

时间:2018-06-24 20:21:58

标签: javascript jquery

我有此功能可以正常工作。问题是当我要将“ myObj [x] .tipologia”传递给“ Abilita”函数时说“ myObj未定义”。

function showTipo(str){
  var i=0;
$("#demo").remove();
;
    var obj, dbParam, xmlhttp, myObj, x,t,txt = "";
    var prova;
   // obj = { "table":sel, "limit":20 };
   // dbParam = JSON.stringify(obj);
    xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function(){
        if (this.readyState == 4 && this.status == 200) {

         $("#secondo").before("<center><div id='demo' class='w3-row-padding w3-padding-64 w3-container'> </div></center>");
           myObj = JSON.parse(this.responseText);
          $("#demo").prepend("<div>  <table border='1' width='75%'> <tr><th width='25%'>Tipologia</th><th width='25%'>Abilitata</th><th width='25%'>Azioni</th></tr></table><table border='1' id='tab' width='75%'></div> ");


            for (x in myObj) {
            i=i+1;
            if(myObj[x].tipologia_abilitata != "2"){


               if(myObj[x].tipologia_abilitata == "1")
            {
              myObj[x].tipologia_abilitata = "ABILITATO";

            }
            else
            {
              myObj[x].tipologia_abilitata  = "DISABILITATO ";
            }
            prova=myObj[x].tipologia;                                                                                                                                                                                                                                    


             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 += "</table>";





           }
$("#tab").after(" <br> <br><button   class:'w3-button' onClick=AddTipologia()> Aggiungi Tipologia </button>    <button onClick=ModificaTipologia()>Modifica</button>");
    };
    xmlhttp.open("POST", "VisualizzaCategorie.php", true);
    xmlhttp.setRequestHeader("Content-type", "application/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> "; 

我不明白你为什么能帮助我?

onclick中是否存在报价错误?

1 个答案:

答案 0 :(得分:0)

要使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);

请注意,您将无法分配给容器的innerHTML并在其中保留处理程序-而是使用显式创建和附加元素的方法,例如document.createElement和{{1 }}。