Estoy tratando de llamar a la función game.LeftOrRightRow desde otro archivo, main.js, pero no funciona. Me gustaría exportar el juego de objetos en lugar de solo la función particular.
Sé que la función en sí funciona porque cuando estaba en el mismo archivo hizo exactamente lo que debía hacer (devolver newRow). También estoy bastante seguro de que he especificado el directorio correcto.
Es la primera vez que escribo Javascript, por lo que esto puede deberse a un error tonto.
El archivo 2048.js cuya función quiero exportar:
const game = Object.create(null); game.LeftOrRightRow = function (i, direction){ let totalOne = squares[i].innerHTML; let totalTwo = squares[i+1].innerHTML; let totalThree = squares[i+2].innerHTML; let totalFour = squares[i+3].innerHTML; //the above stores the inner value of each square //on that row, starting from the left let row = [parseInt(totalOne), parseInt(totalTwo), parseInt(totalThree), parseInt(totalFour)] //create an array storing the entire row let filterRow = row.filter(num => num) //filter out numbers from rows and store the numbers //as a new array. let missing = 4 - filterRow.length //checking how many 0s there are now in the row let zeros = Array(missing).fill(0) //creating a new array filled with these 0s if(direction == "right"){ let newRow = zeros.concat(filterRow) //If we are wanting to swipe right, the zeros //will be placed before the twos in our array. return newRow }else if (direction == "left"){ let newRow = filterRow.concat(zeros) //If we are wanting to swipe left, the twos //will be placed before the zeros in our array. return newRow } } export default Object.freeze(game);El archivo main.js donde quiero llamar a la función:
import R from "../common/ramda.js"; import Json_rpc from "./Json_rpc.js"; import game from "../common/2048.js"; document.addEventListener("DOMContentLoaded", () => { ... function moveLeftOrRight(direction){ for(let i=0; i <16; i++){ //loops over all of grid if(i%4 === 0){ //define rows using modulus. If i MOD 4 = 0, //this means that the square is the start of each row. let newRow = game.LeftOrRightRow(i, direction) //newRow = game.swipeRightRow(i) //document.write(newRow) squares[i].innerHTML = newRow[0] squares[i+1].innerHTML = newRow[1] squares[i+2].innerHTML = newRow[2] squares[i+3].innerHTML = newRow[3] //replaces each value with the new array } } } }