2016-09-24 7 views
0

Ich erstelle dynamisch ein Kontrollkästchen. Jetzt möchte ich eine Funktion aufrufen (sagen wir Hallo Welt), wenn das Kontrollkästchen aktiviert ist. Ich habe setAttribute verwendet, um die Funktion aufzurufen, aber ich habe Probleme beim Übergeben von Parametern. Ich möchte, dass die Werte von i und j übergeben werden, damit sie funktionieren. mein Code Es folgt -Dynamisch CheckBox erstellen und eine Funktion mit Onchange-Ereignis aufrufen

function addTable(message) { 
var paxArray=new Array(); 
var mealsArray= new Array(); 
mealsArray=['Vegeterian Food','Non Vegeterian Food', 'Indian Continental','Chinese']; 
paxArray=message.data; 
for(var i=0;i<paxArray.length;i++){ 
    var x= document.createElement('tr'); 
    x.innerHTML=paxArray[i]; 
    document.getElementById("Content").appendChild(x); 
    for(var j=0;j<mealsArray.length;j++){ 
     var row=document.createElement('tr'); 
     var meal=document.createElement('td'); 
     var check_box=document.createElement('td'); 
     var check=document.createElement('input'); 
     check.type="checkbox"; 
     check.id="checkbox"+i+j; 
     check.setAttribute("onchange","Helloworld(i+j);"); 
     meal.innerHTML=mealsArray[j]; 
     check_box.appendChild(check) 
     row.appendChild(check_box); 
     row.appendChild(meal); 
     document.getElementById("Content").appendChild(row); 
    } 
} 
} 


    function Helloworld(index){ 
document.getElementById("text").innerHTML=index; 
    } 
+0

Es gibt eine vollkommen gute onchange Javascript-Eigenschaft, die Sie festlegen können. Warum Attribut? und "i + j" existiert nicht im HTML-Kontext. – TigOldBitties

Antwort

1

i + Hier j Sie vorbei sind einfach Zeichen nicht Variablenwerte. Versuchen: sagen var i = 4; var j=3; wenn Sie Helloworld(43)

check.setAttribute("onchange","Helloworld("+i+j+");"); 

anrufen möchten, wenn Sie Helloworld(7)

var k=i+j; 
check.setAttribute("onchange","Helloworld("+k+");"); 
+0

Oh ja, es hat funktioniert. – yashpandey

0

Verwenden

function assignFunction(i, j) { 
    return function() { 
     Helloworld(i+j); 
    } 
} 
check.onchange = assignFunction(i+j); 
+0

Ja, es hat funktioniert. Wenn Sie jedoch auf ein Kontrollkästchen klicken, ist "6" die Nummer, die immer aktualisiert wird. 6, was die Addition der Länge beider Arrays ist. – yashpandey

+1

oh ja, es ist, weil es ausgewertet wird, wenn es ausgeführt wird (geändert). – TigOldBitties

+0

Auf gültige Antwort aktualisiert. – TigOldBitties

0

anrufen möchten Sie mögen dieses

check.setAttribute("onchange",`"Helloworld(" + (i + j) + ");"`); 

tun könnte, wenn Sie nicht tun benutze (i + j) und lege nur "Helloworld (" + i + j + ");", du wirst Verkettung bekommen und nicht Summe

Verwandte Themen