我正在动态创建一个复选框。现在我想在选中复选框时调用一个函数(让我们说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;
}
答案 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 +“);”,你将得到连接而不是总和