Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从javascript函数中删除元素_Javascript_Mouseevent - Fatal编程技术网

从javascript函数中删除元素

从javascript函数中删除元素,javascript,mouseevent,Javascript,Mouseevent,我一直在编写一个游戏,我想在这里提到的部分是——有一种形式,玩家选择他们玩的棋盘的大小,我成功地完成了,它生成了半个金字塔 我的主要问题是,为了玩游戏,我需要将鼠标移到元素上,它会改变颜色,然后单击它将其删除。无论我做什么,我似乎无法在我选择的元素上做到这一点,我可以让它发生在最近的元素上,但决不能发生在我单击的元素上 这就是我到目前为止得到的 function selectTab() { document.getElementById("tabuleiro").innerHTML =

我一直在编写一个游戏,我想在这里提到的部分是——有一种形式,玩家选择他们玩的棋盘的大小,我成功地完成了,它生成了半个金字塔

我的主要问题是,为了玩游戏,我需要将鼠标移到元素上,它会改变颜色,然后单击它将其删除。无论我做什么,我似乎无法在我选择的元素上做到这一点,我可以让它发生在最近的元素上,但决不能发生在我单击的元素上

这就是我到目前为止得到的

function selectTab() { 
    document.getElementById("tabuleiro").innerHTML = "";
    var tamanho = document.getElementById("valorint").value;
    if(tamanho<=10) {
        console.log(tamanho);
        var tab = document.getElementById("tabuleiro");
        for(var i = 0; i<tamanho; i++) {
            var linha = document.createElement('div');
            for(var j = 0; j<i+1; j++) {
                var coluna = document.createElement('div');
                coluna.setAttribute("id", "coluna");
                linha.appendChild(coluna);
                coluna.addEventListener("click", function() {
                    playMove(this.id) }, false);
            }
            tab.appendChild(linha);
        }
    }
    else {
        console.log(tamanho);
        alert("Isso é demasiado!");
    }
}

function playMove(id) {
    this.closest("div").remove();
}
函数selectTab(){
document.getElementById(“tabuleiro”).innerHTML=“”;
var tamanho=document.getElementById(“valorint”).value;

如果(tamanho在for循环的a侧添加侦听器时,这通常是一个关闭问题。请尝试:

function selectTab() { 
    document.getElementById("tabuleiro").innerHTML = "";
    var tamanho = document.getElementById("valorint").value;
    if(tamanho<=10) {
        console.log(tamanho);
        var tab = document.getElementById("tabuleiro");
        for(var i = 0; i<tamanho; i++) {
            var linha = document.createElement('div');
            for(var j = 0; j<i+1; j++) {
                var coluna = document.createElement('div');
                coluna.setAttribute("id", "coluna");

                (function(element){
                    element.addEventListener("click", function() {
                    playMove(this.id) }, false);
                )}(coluna);

                coluna.appendChild(coluna);
            }
            tab.appendChild(linha);
        }
    }
    else {
        console.log(tamanho);
        alert("Isso é demasiado!");
    }
}

function playMove(id) {
    this.closest("div").remove();
}


单击我!
最近的
将删除最近的父项,您是否尝试过
此方法。删除()
我尝试过,它显示此方法。删除()不是一个函数事件处理程序不会触及
i
j
。它只关心
这个
。没有变量被关闭。需要关闭这是一个常见问题。虽然您链接到的问题是一个常见问题,但不是这里的问题(原因在我之前的评论中描述)。但它不起作用,也有同样的问题。它说。最近的不是一个函数。我用工作代码更新了我的答案。@Quentin是对的。你不需要闭包。对不起,html。我不懂葡萄牙语,所以我不得不对你的目的有很多猜测。