将onclick事件添加到循环中的各个div

Y

我正在打井字游戏。我想向每个div添加单独的onclick事件,以便可以根据我单击的div添加“ X”或“ O”。稍后将添加“ O”。

JavaScript:

function createDivs() {
  for (i = 0; i < 9; i++) {
    var d = document.createElement("DIV");
    document.body.appendChild(d);

    //Stuck here -borrowed some of this from a similar topic-    
    d.onclick = function() {
      return function() {
        var p = document.createElement("P");
        var x = document.createTextNode("X");
        p.appendChild(x);
        d.appendChild(p);
      }
    }(i);
    //-------------------------------------------------  

    var ii = document.createAttribute("id");
    ii.value = "D" + i;
    d.setAttributeNode(ii);
    var z = "D" + i;
    if (i == 3 || i == 6) {
      document.getElementById(z).style.clear = "left";
    }
  }
}

的HTML: <body onload="createDivs()">

人造丝

d作为参数传递并接受作为参数,以便闭包click将在执行处理程序函数时记住它

d没什么,但element你正在创建(var d = document.createElement("DIV");

function createDivs() {
  for (i = 0; i < 9; i++) {
    var d = document.createElement("DIV");
    d.style.float = 'left';
    document.body.appendChild(d);
    d.onclick = function(d) {
      //----------------^^^ Accept d here
      return function() {
        var p = document.createElement("P");
        var x = document.createTextNode("X");
        p.appendChild(x);
        d.appendChild(p);
        d.onclick = function() {}; //Unset function after click event
      }
    }(d);
    //^^ Pass d here
    var ii = document.createAttribute("id");
    ii.value = "D" + i;
    d.setAttributeNode(ii);
    var z = "D" + i;
    if (i == 3 || i == 6) {
      document.getElementById(z).style.clear = "left";
    }
  }
}
div {
  width: 30px;
  height: 30px;
  border: 1px solid black;
}
<body onload="createDivs()">

更新:作为建议的Barmar在评论中值thisevent-handler函数将在其事件注册的元素。

function createDivs() {
  for (i = 0; i < 9; i++) {
    var d = document.createElement("DIV");
    d.style.float = 'left';
    document.body.appendChild(d);
    d.onclick = function() {
      var p = document.createElement("P");
      var x = document.createTextNode("X");
      p.appendChild(x);
      this.appendChild(p);
      this.onclick = function() {}; //Unset function after click event
    };
    var ii = document.createAttribute("id");
    ii.value = "D" + i;
    d.setAttributeNode(ii);
    var z = "D" + i;
    if (i == 3 || i == 6) {
      document.getElementById(z).style.clear = "left";
    }
  }
}
div {
  width: 30px;
  height: 30px;
  border: 1px solid black;
}
<body onload="createDivs()">

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用jQuery将“ onClick”事件添加到动态div

来自分类Dev

将onClick事件添加到append()

来自分类Dev

将onclick事件添加到模板

来自分类Dev

将onclick添加到元素,但保持当前的onclick事件

来自分类Dev

如何将ID,值和onclick事件添加到动态生成的div

来自分类Dev

在for循环中以编程方式将addView添加到TableRow

来自分类Dev

将诺言添加到for循环中的诺言数组中

来自分类Dev

将值添加到循环中的数组

来自分类Dev

将循环中的答案添加到列表中

来自分类Dev

将(*)星号文件添加到for循环中的变量

来自分类Dev

将循环中的输出添加到哈希表Powershell

来自分类Dev

将诺言添加到for循环中的诺言数组中

来自分类Dev

将rnorm添加到循环中的列

来自分类Dev

将类添加到循环中的元素(jquery)

来自分类Dev

延迟将新对象添加到循环中的数组

来自分类Dev

将for循环中的JSONObject添加到外部的JSONObject

来自分类Dev

将for循环中的元素添加到画布

来自分类Dev

将参数(post_status)添加到循环中

来自分类Dev

PHP 将 for 循环中的项添加到对象

来自分类Dev

如何使用JavaScript将onclick事件添加到元素

来自分类Dev

将动态变量添加到onclick事件

来自分类Dev

将onClick事件添加到zabuto日历

来自分类Dev

如何将onclick事件添加到Wordpress菜单

来自分类Dev

将onclick事件添加到img id

来自分类Dev

将动态变量添加到onclick事件

来自分类Dev

HighCharts堆积的列,将Onclick事件添加到图表

来自分类Dev

使用 jQuery 将 onclick 事件添加到链接

来自分类Dev

在循环中添加到集合

来自分类Dev

将mouseover事件添加到JavaScript创建的DIV中