onclick 循环提示

Looping prompt on onclick

所以我有一个 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++);
    }
}
}}

图片

据我所知,MySQL 循环与手头的问题无关,appendTo("#div"+ j++) 中变量 j 的值在循环之外,所以在触发 onclick 函数时不是您所期望的。

因此,使用单个循环为每个 div/button 组设置 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);
}

此处演示:http://jsfiddle.net/BloodyKnuckles/xc0La8ov/