2016-09-24 61 views
0

我正在動態創建一個複選框。現在我想調用一個函數(讓我們說你好世界),每當複選框被選中。我用setAttribute來調用函數,但是我在傳遞參數時遇到問題。我希望將i和j的值傳遞給函數。 以下是我的代碼 -動態創建CheckBox並使用Onchange事件調用函數

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

有一個非常好的onchange JavaScript屬性,你可以設置。爲什麼屬性?和「i + j」在html上下文中不存在。 – TigOldBitties

回答

1

在這裏,我+你逝去的j是簡單的字符不是變量值。 嘗試: 說var i = 4; var j=3; 如果你想打電話Helloworld(43)

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

,如果你想打電話Helloworld(7)

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

哦,是的,它的工作。 – yashpandey

0

使用

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

是的,它確實有效。但是,無論何時點擊任何複選框,「6」都是始終得到更新的數字。 6,這是兩個陣列的長度的增加。 – yashpandey

+1

哦,是的,這是因爲它正在運行(更改)時進行評估。 – TigOldBitties

+0

更新爲有效答案。 – TigOldBitties

0

你可以做這樣的

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

如果你不這樣做使用(i + j)並放在「Helloworld(」+ i + j +「);」,你會得到連接而不是

相關問題