Javascript SCRIPT16389:SCRIPT16389:未指定的错误。边缘控制台

Javascript SCRIPT16389:SCRIPT16389:未指定的错误。边缘控制台,javascript,jquery,html,microsoft-edge,Javascript,Jquery,Html,Microsoft Edge,我知道其他一些问题与这个主题相关,但他们的答案对我没有帮助。 我试图在js中实现battleship,在调试时,我得到了SCRIPT16389:SCRIPT16389:Unspecified错误。在microsoft edge控制台中。 以下是我到目前为止的js代码:(我是javascript初学者,如果犯了严重错误,非常抱歉) var-board=null; var=null; var行=8; var列=8; $(文档).ready(函数(){ if(类型(存储)!=“未定义”){ boats

我知道其他一些问题与这个主题相关,但他们的答案对我没有帮助。 我试图在js中实现battleship,在调试时,我得到了SCRIPT16389:SCRIPT16389:Unspecified错误。在microsoft edge控制台中。 以下是我到目前为止的js代码:(我是javascript初学者,如果犯了严重错误,非常抱歉)

var-board=null;
var=null;
var行=8;
var列=8;
$(文档).ready(函数(){
if(类型(存储)!=“未定义”){
boats=JSON.parse(localStorage.getItem(“boats”);
控制台.圆木(船);
如果(船===null){
船只=[
{大小:2,字母:'f',名称:'fragate'},
{大小:3,字母:'b',名称:'buque'},
{大小:3,字母:'s',名称:'subside'},
{大小:4,字母:'d',名称:'destructor'},
{大小:5,字母:'p',名称:'portplanes'},
];
setItem(“boats”,JSON.stringify(boats));
}
rows=parseInt(localStorage.getItem(“rows”);
columns=parseInt(localStorage.getItem(“columns”);
if(isNaN(行)| | isNaN(列)){
行数=8;
列=8;
setItem(“行”,8);
setItem(“columns”,8);
}
}否则{
log(“我们没有本地存储”)
}
});
函数createMatrix(行、列){
var矩阵;
矩阵=新数组(行);

对于(var i=0;i,在更正了大量输入错误并检查了逻辑之后,报告的主要问题出现在
startMatrix()
中,其中
for
循环没有增加其计数器。这导致了无限循环

考虑以下问题进行修复:

function startMatrix(data, matrix) {
  var singleRow, singleCol;
  for (var r = 0; r < matrix.length; r++) {
    for (var c = 0; c < matrix[r].length; c++) {
      matrix[r][c] = data;
    }
  }
  console.log("SM: Matrix Complete", matrix);
}
JavaScript

var board = null;
var boats = null;
var rows = 8;
var columns = 8;

function createMatrix(row, col) {
  var matrix;
  matrix = new Array(row);
  for (var i = 0; i < row; i++) {
    matrix[i] = new Array(col);
  }
  console.log("CM: New Matrix Created", matrix);
  return matrix;
}

function startMatrix(data, matrix) {
  var singleRow, singleCol;
  for (var r = 0; r < matrix.length; r++) {
    for (var c = 0; c < matrix[r].length; c++) {
      matrix[r][c] = data;
    }
  }
  console.log("SM: Matrix Complete", matrix);
}

function createFullMatrix(row, col, inside) {
  var matrix = new Array(row);
  for (var i = 0; i < row; i++) {
    matrix[i] = new Array(col);
    for (var j = 0; j < col; j++) {
      matrix[i][j] = inside;
    }
  }
  return matrix;
}

function matrix2console(matrix) {
  var aux;
  for (var i = 0; i < matrix.length; i++) {
    aux = "";
    for (var j = 0; j < matrix[i].length; j++) {
      aux += matrix[i][j] + '\t';
    }
    console.log(aux);
  }
}

function createBoardjQ() {
  $("#match").empty();
  var table = $("<table />");
  for (var i = 0; i < rows; i++) {
    var row = $("<tr/>");
    for (var j = 0; j < columns; j++) {
      var celd = $('<td id="celd_' + i + '_' + j + '" data-shoot="celd_' + i + '_' + j + ',' + i + ',' + j + '"></td>');
      celd.addClass("water");
      row.append(celd);
    }
    table.append(row);
  }
  $("#match").append(table);
}

function createMatch() {
  console.log("CMa: Make Board");
  board = createMatrix(rows, columns);
  console.log("CMa: Start Matrix", 'a', board);
  startMatrix('a', board);
  console.log("CMa: Set Boats", board);
  setBoats(board);
  console.log("CMa: Create Board jQ");
  createBoardjQ();
  console.log("CMa: Matrix to Console");
  matrix2console(board);
}

function shoot(celd, i, j) {
  switch (board[i][j]) {
    case 'a':
      board[i][j] = 'A';
      $('#' + celd).removeClass('water');
      $('#' + celd).addClass('miss');
      console.log("Miss");
      break;
    case 'b':
      board[i][j] = 'B';
      $('#' + celd).removeClass('water');
      $('#' + celd).addClass('boats');
      console.log("Hit");
      break;
    case 'd':
      board[i][j] = 'd';
      $('#' + celd).removeClass('water');
      $('#' + celd).addClass('boats');
      console.log("Hit");
      break;
    case 'f':
      board[i][j] = 'F';
      $('#' + celd).removeClass('water');
      $('#' + celd).addClass('boats');
      console.log("Hit");
      break;
    case 'p':
      board[i][j] = 'P';
      $('#' + celd).removeClass('water');
      $('#' + celd).addClass('boats');
      console.log("Hit");
      break;
    case 's':
      board[i][j] = 'S';
      $('#' + celd).removeClass('water');
      $('#' + celd).addClass('boats');
      console.log("Hit");
      break;
  }
}

function dice(value) {
  var random;
  random = Math.floor(Math.random() * (value));
  return random;
}

function coin() {
  return (dice(2));
}

function setBoats(matrix) {
  var i, j, row, col, free;
  for (i = 0; i < boats.length; i++) {
    var boat = boats[i];
    do {
      free = true;
      var direction = coin();
      if (!direction) {
        row = dice(matrix.length);
        col = dice(matrix[row].length - boat.size);
        for (j = 0; j < boat.size; j++) {
          if (matrix[row][j] != 'a') {
            free = false;
          }
        }
        if (free) {
          for (j = 0; j < boat.size; j++) {
            matrix[row][j + col] = boat.letter;
          }
        }
      } else {
        row = dice(matrix.length - boat.size);
        col = dice(matrix[row].length);
        //row = dice(matrix.length);
        //col = dice(matrix[row].length - boat.size);
        for (j = 0; j < boat.size; j++) {
          var k = (j + row) >= 1 ? (j + row) - 1 : 0;
          console.log(j, row, k, boat.size);
          if (k > matrix.length) {
            free = false;
          } else {
            if (matrix[k][col] != 'a') {
              free = false;
            }
          }
        }
        if (free) {
          for (j = 0; j < boat.size; j++) {
            matrix[j + row][col] = boat.letter;
          }
        }
      }
    } while (!free);
  }
}

$(document).ready(function() {
  if (typeof(Storage) !== "undefined") {
    boats = JSON.parse(localStorage.getItem("boats"));
    console.log(boats);

    if (boats === null) {
      boats = [{
          size: 2,
          letter: 'f',
          name: 'fragate'
        },
        {
          size: 3,
          letter: 'b',
          name: 'buque'
        },
        {
          size: 3,
          letter: 's',
          name: 'submarine'
        },
        {
          size: 4,
          letter: 'd',
          name: 'destructor'
        },
        {
          size: 5,
          letter: 'p',
          name: 'portplanes'
        },
      ];
      localStorage.setItem("boats", JSON.stringify(boats));
    }
    rows = parseInt(localStorage.getItem("rows"));
    columns = parseInt(localStorage.getItem("columns"));
    if (isNaN(rows) || isNaN(columns)) {
      rows = 8;
      columns = 8;
      localStorage.setItem("rows", 8);
      localStorage.setItem("columns", 8);
    }
    console.log(rows, columns);
    createMatch();
    $(".water").click(function(e) {
      console.log("Firing Shot", $(this));
      var c = $(this).data("shoot").split(",");
      shoot(c[0], c[1], c[2]);
    });
  } else {
    console.log("We don't have localStorage");
  }
});
var-board=null;
var=null;
var行=8;
var列=8;
函数createMatrix(行、列){
var矩阵;
矩阵=新数组(行);
对于(变量i=0;i=1?(j+行)-1:0;
控制台。日志(j,row,k,船。大小);
if(k>矩阵长度){
自由=错误;
}否则{
if(矩阵[k][col]!='a'){
自由=错误;
}
}
}
如果(免费){
对于(j=0;j<div id="match">
</div>
#match td {
  width: 20px;
  height: 20px;
}

#match .water {
  background-color: #ccf;
}

#match .miss {
  background-color: #eee;
}

#match .boats {
  background-color: #ccc;
}
var board = null;
var boats = null;
var rows = 8;
var columns = 8;

function createMatrix(row, col) {
  var matrix;
  matrix = new Array(row);
  for (var i = 0; i < row; i++) {
    matrix[i] = new Array(col);
  }
  console.log("CM: New Matrix Created", matrix);
  return matrix;
}

function startMatrix(data, matrix) {
  var singleRow, singleCol;
  for (var r = 0; r < matrix.length; r++) {
    for (var c = 0; c < matrix[r].length; c++) {
      matrix[r][c] = data;
    }
  }
  console.log("SM: Matrix Complete", matrix);
}

function createFullMatrix(row, col, inside) {
  var matrix = new Array(row);
  for (var i = 0; i < row; i++) {
    matrix[i] = new Array(col);
    for (var j = 0; j < col; j++) {
      matrix[i][j] = inside;
    }
  }
  return matrix;
}

function matrix2console(matrix) {
  var aux;
  for (var i = 0; i < matrix.length; i++) {
    aux = "";
    for (var j = 0; j < matrix[i].length; j++) {
      aux += matrix[i][j] + '\t';
    }
    console.log(aux);
  }
}

function createBoardjQ() {
  $("#match").empty();
  var table = $("<table />");
  for (var i = 0; i < rows; i++) {
    var row = $("<tr/>");
    for (var j = 0; j < columns; j++) {
      var celd = $('<td id="celd_' + i + '_' + j + '" data-shoot="celd_' + i + '_' + j + ',' + i + ',' + j + '"></td>');
      celd.addClass("water");
      row.append(celd);
    }
    table.append(row);
  }
  $("#match").append(table);
}

function createMatch() {
  console.log("CMa: Make Board");
  board = createMatrix(rows, columns);
  console.log("CMa: Start Matrix", 'a', board);
  startMatrix('a', board);
  console.log("CMa: Set Boats", board);
  setBoats(board);
  console.log("CMa: Create Board jQ");
  createBoardjQ();
  console.log("CMa: Matrix to Console");
  matrix2console(board);
}

function shoot(celd, i, j) {
  switch (board[i][j]) {
    case 'a':
      board[i][j] = 'A';
      $('#' + celd).removeClass('water');
      $('#' + celd).addClass('miss');
      console.log("Miss");
      break;
    case 'b':
      board[i][j] = 'B';
      $('#' + celd).removeClass('water');
      $('#' + celd).addClass('boats');
      console.log("Hit");
      break;
    case 'd':
      board[i][j] = 'd';
      $('#' + celd).removeClass('water');
      $('#' + celd).addClass('boats');
      console.log("Hit");
      break;
    case 'f':
      board[i][j] = 'F';
      $('#' + celd).removeClass('water');
      $('#' + celd).addClass('boats');
      console.log("Hit");
      break;
    case 'p':
      board[i][j] = 'P';
      $('#' + celd).removeClass('water');
      $('#' + celd).addClass('boats');
      console.log("Hit");
      break;
    case 's':
      board[i][j] = 'S';
      $('#' + celd).removeClass('water');
      $('#' + celd).addClass('boats');
      console.log("Hit");
      break;
  }
}

function dice(value) {
  var random;
  random = Math.floor(Math.random() * (value));
  return random;
}

function coin() {
  return (dice(2));
}

function setBoats(matrix) {
  var i, j, row, col, free;
  for (i = 0; i < boats.length; i++) {
    var boat = boats[i];
    do {
      free = true;
      var direction = coin();
      if (!direction) {
        row = dice(matrix.length);
        col = dice(matrix[row].length - boat.size);
        for (j = 0; j < boat.size; j++) {
          if (matrix[row][j] != 'a') {
            free = false;
          }
        }
        if (free) {
          for (j = 0; j < boat.size; j++) {
            matrix[row][j + col] = boat.letter;
          }
        }
      } else {
        row = dice(matrix.length - boat.size);
        col = dice(matrix[row].length);
        //row = dice(matrix.length);
        //col = dice(matrix[row].length - boat.size);
        for (j = 0; j < boat.size; j++) {
          var k = (j + row) >= 1 ? (j + row) - 1 : 0;
          console.log(j, row, k, boat.size);
          if (k > matrix.length) {
            free = false;
          } else {
            if (matrix[k][col] != 'a') {
              free = false;
            }
          }
        }
        if (free) {
          for (j = 0; j < boat.size; j++) {
            matrix[j + row][col] = boat.letter;
          }
        }
      }
    } while (!free);
  }
}

$(document).ready(function() {
  if (typeof(Storage) !== "undefined") {
    boats = JSON.parse(localStorage.getItem("boats"));
    console.log(boats);

    if (boats === null) {
      boats = [{
          size: 2,
          letter: 'f',
          name: 'fragate'
        },
        {
          size: 3,
          letter: 'b',
          name: 'buque'
        },
        {
          size: 3,
          letter: 's',
          name: 'submarine'
        },
        {
          size: 4,
          letter: 'd',
          name: 'destructor'
        },
        {
          size: 5,
          letter: 'p',
          name: 'portplanes'
        },
      ];
      localStorage.setItem("boats", JSON.stringify(boats));
    }
    rows = parseInt(localStorage.getItem("rows"));
    columns = parseInt(localStorage.getItem("columns"));
    if (isNaN(rows) || isNaN(columns)) {
      rows = 8;
      columns = 8;
      localStorage.setItem("rows", 8);
      localStorage.setItem("columns", 8);
    }
    console.log(rows, columns);
    createMatch();
    $(".water").click(function(e) {
      console.log("Firing Shot", $(this));
      var c = $(this).data("shoot").split(",");
      shoot(c[0], c[1], c[2]);
    });
  } else {
    console.log("We don't have localStorage");
  }
});