Javascript onclick上的循环提示

Javascript onclick上的循环提示,javascript,for-loop,prompt,Javascript,For Loop,Prompt,所以我有一个php文件,它将MySQL中的内容循环到不同的div中。每个div都有一个id“name”。$j++。我在循环中放置了一个按钮,每当单击它时,就会显示一个提示。每个按钮的id都是“button”。$i++。我希望提示框中的输入显示在div的末尾。(每个div的输入不同。) 用我当前的代码,我只能在每个div的末尾显示一个输入。当我尝试向div1添加第二个输入时,它会自动转到div2,依此类推 JS var n = (<?php echo $i; ?>); for(var

所以我有一个php文件,它将MySQL中的内容循环到不同的div中。每个div都有一个id
“name”。$j++
。我在循环中放置了一个按钮,每当单击它时,就会显示一个提示。每个按钮的id都是
“button”。$i++。
我希望提示框中的输入显示在div的末尾。(每个div的输入不同。)

用我当前的代码,我只能在每个div的末尾显示一个输入。当我尝试向div1添加第二个输入时,它会自动转到div2,依此类推

JS

var n = (<?php echo $i; ?>);
for(var i=0; i<=n; i++){
for(var j=0; j<=n; j++){


document.getElementById("button"+i).onclick = function() {
    var money;
    money = prompt("Write something here:");
    if(money === null){
        return;
    }else{
        $("<p> " + money + "</p>").appendTo("#div"+ j++);
    }
}
}}
var n=();

就(var i=0;i而言,从我所看到的,MySQL循环与当前的问题无关,
appendTo(“#div”+j++”)
中的变量
j
的值在循环之外,因此在触发onclick函数时,这不是您所期望的

因此,使用单个循环为每个div/按钮组设置onclick事件,并使用
bind
函数方法将当前作用域锁定到匿名函数中,该匿名函数被传递给onclick事件处理程序(因此锁定当前值
j
),并传递
j
(为了清楚起见,以
jj
的形式)添加到该功能

for(var j=1; j<=n; j++){
  document.getElementById("button"+j).onclick = function(jj) {
    var money;
    money = prompt("Write something here:");
    if(money === null){
        return;
    }else{
        $("<p> " + money + "</p>").appendTo("#div"+ jj++);
    }
  }.bind(this, j);
}

for(var j=1;我不明白为什么在循环中有一个循环。假设n是10。这意味着您将在onclick代码中循环100次,每次覆盖10次。因为我的divs(在php中)循环总是有+1和我的按钮,所以我想在我的js中,我应该循环按钮总是得到+1和div得到+1,但是由于div!=按钮,它们应该有不同的变量。否则我只能通过一个按钮打开提示符。我想不出任何其他方法来做到这一点…我想看到你想要的HTML输出这会很有帮助。我认为MySQL循环与当前的问题无关,我认为在触发onclick时需要一个闭包来维护所需的div索引。你是说我应该在php循环中从div id的末尾删除$I++和$j++,还是我不应该关心它们?抱歉,我现在有点困惑。。。