2015-10-20 44 views
-1

这里是我的代码:的JavaScript。加入不工作

board = []; 

var rowsNum = 5; 
var colsNum = 5; 

function printBoard(board) { 
    for (row in board) { 
     document.write(" ").join(row); 
    } 
} 

function clearAndRestartBoard() { 
    board = []; 
    for (i = 0; i < rowsNum; i++) { 
     board.push("[ ]" * colsNum); 
     } 
} 

printBoard(board);  

它不会抛出一个错误,但它并不在我的网页上显示出来。你知道我做错了什么吗?

以防万一,这里是没有的CSS的HTML:

<!DOCTYPE html> 
<html> 
    <head> 
     <link href="test.css" type="text/css"rel="stylesheet" /> 
     <title> Test! </title> 
    </head> 
    <body> 
     <p id = "script"> <script src = "test.js"> </script> </p> 
    </body> 
</html> 

我是很新的JS所以非常感谢你的帮助!

+0

你'board'变量是一个空数组。然后'“[]”* colsNum'不符合你的想法。 – zerkms

+0

你到底想做什么? – iplus26

+0

https://jsfiddle.net/arunpjohny/h294wre3/1/ –

回答

6

这里有几个问题,但主要的是你永远不会打电话clearAndRestartBoard,所以board是空的,所以你永远不会输出任何东西。

这里的一切,我看到过的,袖口的问题的列表:

  1. 你永远不会调用clearAndRestartBoard

  2. 您的代码正在堕入The Horror of Implicit Globals:声明您的变量。您正在使用for-in来遍历数组。这通常不是一个好主意,尽管可能有用例; this answer概述了循环访问数组的各种选项。

  3. "[ ]" * colsNumNaN,因为*会将其两个操作数转换为数字,然后进行数学乘法。字符串"[ ]"转换为NaN,因为它不能被解释为一个数字,然后乘以NaN的任何东西是NaN。它不是colsNum空白阵列。要做到这一点,你必须有第二个循环创建行数组,将"[ ]"放入它们中,并将这些行数组推入board。您正在使用document.write。虽然这可以用于简单的实验,但这不是您想要使用的一般情况。

  4. 你打电话join上的document.write的结果,我相当肯定不是数组。

  5. 我也建议你要么使用全球董事会,或总是把它作为一个参数,而不是混合和匹配,其中一个功能使用全局和其他用途的说法。

  6. 您从不在行之间输出换行符。

这里有一个最小的更新,解决这些:

var board; 
 

 
var rowsNum = 5; 
 
var colsNum = 5; 
 

 
function printBoard(board) { 
 
    board.forEach(function(row) { 
 
    document.write(row.join("")); 
 
    document.write("<br>"); 
 
    }); 
 
} 
 

 
function clearAndRestartBoard() { 
 
    var row; 
 
    board = []; 
 
    for (var r = 0; r < rowsNum; r++) { 
 
    row = []; 
 
    for (var c = 0; c < colsNum; c++) { 
 
     row.push("[ ]"); // If you really wanted the string [ ] 
 
    } 
 
    board.push(row); 
 
    } 
 
} 
 

 
clearAndRestartBoard(); 
 
printBoard(board);

+0

OMG!我完全犯了很多错误!请大家帮忙,很快我会好起来的。 JS肯定是不同的蟒蛇! – Demandooda

+0

@Demandooda:犯错误是学习某些东西的不可避免的部分。 :-) –