Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.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 相邻td之间的相互作用_Javascript_Jquery_Arrays_Html Table - Fatal编程技术网

Javascript 相邻td之间的相互作用

Javascript 相邻td之间的相互作用,javascript,jquery,arrays,html-table,Javascript,Jquery,Arrays,Html Table,问题 如何比较两个相邻单元格的坐标 帮助我的文档 我已经看到了这些问题,它们帮助了我,但它们与我的情况不同: 代码 我有一个动态生成的表 function tableGenerate(Mytable){ for(var i = 0; i < myTable.length; i++) { var innerArrayLength = myTable[i].length; for(var j = 0; j<inner

问题

如何比较两个相邻单元格的坐标

帮助我的文档

我已经看到了这些问题,它们帮助了我,但它们与我的情况不同:

  • 代码

    我有一个动态生成的表

    function tableGenerate(Mytable){
            for(var i = 0; i < myTable.length; i++) {
                var innerArrayLength = myTable[i].length;
                for(var j = 0; j<innerArrayLength; j++){
                    if(myTable[i][j] === 0){
                        myTable[i][j]="x";
                    }else{
                        myTable[i][j]="y";
                    };
                };
                $("#aTable").append("<tr><td>"+ myTable[i].join('</td><td>') + "</td></tr>")    
            }
    }  
    
    代码的最后部分是这样工作的:

    • 我将selectedTd的位置保存在两个不同的变量中
    • 我创建了2d数组
      方向
      ,其中包含与所选的
      方向相关的近单元格坐标
    • 在第一个
      中输入如果
      ,比较两个单元格。如果其中一个坐标相同,则输入最后一个
      If
    功能比较(selectedTd){
    设tdRow=selectedTd.actualPosition.row;
    设tdCell=selectedTd.actualPosition.cell;
    让方向=[
    [tdRow-1,tdCell],
    [tdRow+1,tdCell],
    [tdRow,tdCell+1],
    [tdRow,tdCell-1]
    ];//这些是mainTd附近的TD,我需要与其他TD进行比较
    设tdToCompare=[];
    如果(selectedTd.name=='interestedValue'){
    tdToCompare=[otherMainTd.actualPosition.row,otherMainTd.actualPosition.cell];
    for(设i=0;i更新:
    再次阅读你的代码,我想我已经解决了问题。您正在比较数组实例,而不是它们的实际值。请参见此简单示例来说明此问题:

    var a=[1];
    VarB=[1];
    
    console.log(a==b)您正在混合==和==。记住,他们不会这么做。使用==除非您还需要比较变量的类型。如果你感兴趣的话,你会提到一个,但你指的是哪一个并不清楚。有三个,我想这是第一个,但最好指出哪一个是你的代码足够复杂,我建议你在上面或类似的服务上创建一个工作演示。@JaviMollá-总是建议使用
    ==
    。哦,对不起。我完全错了。谢谢你指点out@Legeo只是一个建议/评论。创建表时,将
    td
    内容分配给变量。然后,在for的末尾,将内容添加到DOM中。运行这一行
    $(“#aTable”).append(“+myTable[i].join(“)+”)
    每一行都会对浏览器产生很大影响,因为您在每次迭代中都会更改DOM。对于问题的质量,我很抱歉,我已经尽力解释了。我能问一下最难理解的部分是什么吗?所以我可以试着改变一下。如果你打开代码笔,你会看到一个随机生成的带有地图的小游戏。现在,我需要了解一个角色何时靠近另一个角色,以开始一些基本的交互。我认为使用td的坐标是最好的方法。主要问题是我无法比较存储在数组中的值,我不明白为什么。更新了我的答案,我认为我发现了问题。我更好地阅读了你的答案,明白了。谢谢你的解释,很清楚。我现在有更多的时间,所以我再次更新了我的答案。我重写了你的比较方法,并解释了为什么我会做不同的事情。我看过你的比赛,它看起来不错,做得很好!我确实认为你的JS可以从一些更好的结构中受益。至于是什么让你的问题难以回答,对我来说,这是因为缺乏示例输入。首先是地图生成方法,然后是一些数据结构,最后是需要帮助的方法。大量信息与问题关系不大。在许多情况下,一个好的问题都有示例输入、代码和预期输出。这是我在堆栈溢出中得到的最好答案。你的解释非常详尽,我真的非常感谢你为此付出的所有努力。我还需要一个小时给你赏金。谢谢你的解释,它们对我意义重大。
    var mainTd = {
         name: 'interestedValue',
         actualPosition:{
                row: 5,
                cell: 4
              }
    };
    
    var otherMainTd = {
         actualPosition:{
                row: 2,
                cell: 3
              }
    };