Javascript 如何创建函数x次

Javascript 如何创建函数x次,javascript,Javascript,我正在学习编码,我遇到了一个很容易解决的问题 我从数据库中发出一个请求,该请求返回多个用户。我为每个用户创建了一些输入字段,如姓名、电子邮件等 现在我要做的是使用相同的php变量(包含用户数),创建或重复函数x次 这就是我到目前为止所尝试的 var j = 0; while (j <= i) { //i is the variable passed from php, containing the number of useres j++; $('#btnEdit'+

我正在学习编码,我遇到了一个很容易解决的问题

我从数据库中发出一个请求,该请求返回多个用户。我为每个用户创建了一些输入字段,如姓名、电子邮件等

现在我要做的是使用相同的php变量(包含用户数),创建或重复函数x次

这就是我到目前为止所尝试的

var j = 0;

while (j <= i) { //i is the variable passed from php, containing the number of useres

    j++;

    $('#btnEdit'+j).click(function() {

        $("#prename"+j).removeAttr('disabled');
        $("#surname"+j).removeAttr('disabled');
        $("#function"+j).removeAttr('disabled');
        $("#prefix"+j).removeAttr('disabled');
        $("#phone_number"+j).removeAttr('disabled');
        $("#email"+j).removeAttr('disabled');


    });


}
也许我只是对如何做我想做的事感到困惑

让我们举个例子。如果变量i为2,我希望循环创建2个函数,第一个函数必须在单击id为btnEdit1的按钮时执行,第二个函数需要在单击id为btnEdit2的按钮时执行,等等

谢谢你为什么需要这个

您可以使用输入中的
onClick
事件以及id的参数(表示您的
i
值)直接写入

请把这个答案作为一个关键的想法

<input type="button" id="btnEdit<?php echo $i; ?>"
name="button<?php echo $i; ?>" onClick="btnEdit(?php echo $i; ?)" value="Edit"></input>

function btnEdit(id)
{
$("#prename"+id).removeAttr('disabled');
        $("#surname"+id).removeAttr('disabled');
        $("#function"+id).removeAttr('disabled');
        $("#prefix"+id).removeAttr('disabled');
        $("#phone_number"+id).removeAttr('disabled');
        $("#email"+id).removeAttr('disabled');
}

我建议您创建单个函数,而不是创建多个函数

使用自定义
数据-*
属性,通过编辑
按钮来持久化php变量
,该按钮可在以后使用获取

要将事件处理程序附加到目标元素,请使用创建单个方法

<input type="button" class="btnEdit" data-id="<?php echo $i; ?>" name="button<?php echo $i; ?>" value="Edit"></input>

你能分享HTML吗?您可以使用DOM Relationship,也可以创建一个接收ID作为参数的函数。然后在单击处理程序处,用j参数调用函数。这段代码将创建多个函数。但是,由于所有函数都使用相同的全局
j
变量,因此所有函数都将执行相同的操作。当循环完成时,
j==i
。可能是@HåkenLid的重复,但代码实际创建了函数吗?当使用调试器并在循环的开始处设置断点时,它只会迭代到“$”(“#btnEdit”+j)。单击(function(){”行,然后跳回到开始处。我不太确定我是否理解这是怎么回事。您能更详细地说明一下吗?如果我使用data id=“”,我不会让第一个用户的所有输入字段都有数据id=1吗?@zoefrankie,我正在使用
data id=“”使用
btnEdit
元素持久化相同的php变量
,稍后获取并用于目标所需元素,但我在php循环中迭代x次以创建输入字段。如果我将id替换为数据id=“”,不是第一个用户的所有字段都有数据id=1吗?我很困惑,因为您删除了id=prename标记,但您仍然试图使用id删除js中的属性。在这种情况下,#prename+j不是未定义吗?@zoefrankiem,我删除了
id=“btnEdit”
使用编辑按钮,因为它没有任何用处。如果你想保留它,我认为你在更改输入类型文本。尽管如此,我仍然不确定代码的作用。这一行是干什么的?var j=$(this)。data('id'));如果您使用类来执行函数,按钮2不会执行完全相同的函数吗?
    $('#btnEdit'+j).click(function() {
<input type="button" id="btnEdit<?php echo $i; ?>"
name="button<?php echo $i; ?>" onClick="btnEdit(?php echo $i; ?)" value="Edit"></input>

function btnEdit(id)
{
$("#prename"+id).removeAttr('disabled');
        $("#surname"+id).removeAttr('disabled');
        $("#function"+id).removeAttr('disabled');
        $("#prefix"+id).removeAttr('disabled');
        $("#phone_number"+id).removeAttr('disabled');
        $("#email"+id).removeAttr('disabled');
}
<input type="button" class="btnEdit" data-id="<?php echo $i; ?>" name="button<?php echo $i; ?>" value="Edit"></input>
$(document).on('click', '.btnEdit', function(){
    var j = $(this).data('id');
    $("#prename"+j).removeAttr('disabled');
    $("#surname"+j).removeAttr('disabled');
    $("#function"+j).removeAttr('disabled');
    $("#prefix"+j).removeAttr('disabled');
    $("#phone_number"+j).removeAttr('disabled');
    $("#email"+j).removeAttr('disabled');
})