Cum se trece un parametru la o funcție JavaScript setată dinamic? (Programare, Javascript)

Yttrium a intrebat.

Ok, am un JavaScript care creează rânduri într-un tabel, așa cum urmează:

  function AddRow(text,rowID) {
    var tbl = document.getElementById('tblNotePanel');
    var row = tbl.insertRow(tbl.rows.length);

    var cell = row.insertCell();
    var textNode = document.createTextNode(text);
    cell.id = rowID;
    cell.style.backgroundColor = "gold";

    cell.onclick = clickTest;
    
    cell.appendChild(textNode);
  }

În funcția de mai sus, am setat parametrul celulei onclick pentru a apela o altă funcție JavaScript numită clickTest. Întrebarea mea este că atunci când atribui funcția onclick eveniment pentru a apela clickTest, , cum setez informațiile despre parametrii care vor fi trimise atunci când funcția clickTest este apelată în celula onclick eveniment? Sau, cum accesez ID-ul celulei în clickTest funcție?

Mulțumesc, Jeff

2 răspunsuri
tvanfosson

Încercați acest lucru:

cell.onclick = function() { clickTest(rowID); };

Ideea este că legați gestionarul onclick la funcția anonimă. Funcția anonimă apelează clickTest cu rowID ca parametru.

Eric Schoonover

În funcția clickTest ar trebui să aveți acces la un element this variabilă. Încercați acest lucru în interiorul funcției clickTest funcția:

alert(this.id);

Aceasta se va referi la elementul DOM care a declanșat evenimentul.

Practic, nu există o modalitate de a transmite parametri unei funcții de gestionare a evenimentelor. Motivul este că browserul execută funcția pe baza unui eveniment, iar dumneavoastră nu apelați efectiv funcția.

Puteți utiliza închideri care vă permit să accesați variabile locale (pentru închidere) atunci când atribuiți funcția de gestionare a evenimentului. Aceasta ar arăta astfel:

cell.onclick = function() { alert(this.id); alert(cell.id); };

Am fost cell.id este variabila locală care este considerată încă în domeniu atunci când se execută gestionarul de evenimente.