2013-05-05 58 views
0
<!DOCTYPE html> 
<html> 
<head> 
    <title>Anti Chess</title> 
</head> 
<body> 
    <h1 id="game_title">Anti Chess by theManikJindal</h1> 
    <br /> 
    <br /> 

    <table id="game"></table> 
    <script> 
     var white = 1; 
     var ta = document.getElementById("game"); 
     if(white == 1) 
     { 
      for(var i=0;i<8;i++) 
      { 
       var x = document.createElement('tr'); 
       ta.appendChild(x); 
       for(var j=0;j<8;j++) 
       { 
        var y = document.createElement('td'); 
        ta.childNodes[i].appendChild(y); 
        ta.childNodes[i].childNodes[j].setAttribute("id",String.fromCharCode(j+97)+(8-i).toString()); 
       } 

      } 

     } 
     else 
     { 
      for(var i=0;i<8;i++) 
      { 
       var x = document.createElement('tr'); 
       ta.appendChild(x); 
       for(var j=0;j<8;j++) 
       { 
        var y = document.createElement('td'); 
        ta.childNodes[i].appendChild(y); 
        ta.childNodes[i].childNodes[j].setAttribute("id",String.fromCharCode(104-j)+(i+1).toString()); 
       } 

      } 

     } 
    </script> 
</body> 
</html> 

我不明白为什么这个脚本不工作。有没有什么好的Javascript调试器,或者是否有人不得不继续把他们的头撞到墙上来做一些事情。不能理解为什么不这个JavaScript工作

请帮

的脚本应该创建8×8盒一张桌子和id属性应该从“A8”,“B8”,“8” ......“H8”为“A1”设置,“b1”,“c1”...“h1”。对于白色的值为1的情况下,白色不等于1时,从“h”,“g1”,“f1”...“a1”到“h8”,“g8”,...“a8” 。white = 1是现在的默认值。

+1

具有u检查控制台错误 – 2013-05-05 19:27:03

+0

是什么也没有 – tMJ 2013-05-05 19:27:54

+2

这里有什么具体问题?哪些部件工作正常,哪些部件工作不正常? – 2013-05-05 19:29:36

回答

3

表必须至少有一个<tbody>元素。如果没有,浏览器将创建一个。

这意味着您的整个childNodes访问是错误的。

我建议这个HTML:

<table><tbody id="game"></tbody></table> 

这应该使你的代码的工作,但你可以进一步简化它:

var white = 1, a = "a".charCodeAt(0), i, j, x, ta = document.getElementById("game"); 
for(i=0;i<8;i++) { 
    x = document.createElement('tr'); 
    for(j=0;j<8;j++) 
     x.appendChild(document.createElement('td')).id = 
       String.fromCharCode((white == 1 ? j : 8-j)+a)+(white == 1 ? 8-i : i+1); 
    ta.appendChild(x); 
} 

正如你可以看到我已经取消了整个需求通过将white == 1支票移至最相关的地方来重复代码块。我也更多地使用了x参考文献,并且我已经用稍后回来更容易理解的东西(a变量)替换了“魔术”值。

希望这会有所帮助!

编辑:另外,我只是注意到,表没有内容 - 这是你的意思,它没有显示出来?确保你有合适的CSS来使表格单元可见。

+1

他的代码可能一直工作,但这是一个更清洁的解决方案。 – hank 2013-05-05 19:35:47

+0

@hank是啊,我只是注意到,后想到了一些XD – 2013-05-05 19:36:38

+0

是的,这有助于。谢谢。请解释此标记。我第一次听说过它。 – tMJ 2013-05-05 19:37:35

1

此脚本工作正常。我在jsfiddle中激发了元素,并发现元素被创建。

我用一些CSS来显示盒子已经创建。

CSS

table{ 
border:1px solid black; 
} 
table tr, td{ 
border:1px solid black; 
} 

看到这里http://jsfiddle.net/9uHPx/

1

Java脚本的工作,但表中没有显示。

添加边框= 1表

0

脚本工作正常。添加一个循环,以便将ID打印到td标签中,以便您可以看到发生了什么。 http://jsfiddle.net/5YRKx/

 var tableTemp = document.getElementById("game"); 

    for (var ii = 0, row; row = tableTemp.rows[ii]; ii++) { 
     //iterate through rows 
     //rows would be accessed using the "row" variable assigned in the for loop 
     for (var j = 0, col; col = row.cells[j]; j++) { 
     row.cells[j].innerHTML = row.cells[j].id; 
     } 
    }