动态创建CheckBox并使用Onchange Event调用函数

时间:2016-09-24 17:01:28

标签: javascript

我正在动态创建一个复选框。现在我想在选中复选框时调用一个函数(让我们说Hello world)。我使用setAttribute来调用函数,但是在传递参数时我遇到了问题。我希望将i和j的值传递给函数。 以下是我的代码 -

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;
  }

3 个答案:

答案 0 :(得分:1)

这里你传递的i + 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+");");

答案 1 :(得分:0)

使用

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

答案 2 :(得分:0)

你可以这样做

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

如果你不使用(i + j)并且只使用“Helloworld(”+ i + j +“);”,你将得到连接而不是总和