Ja, hier zeigen sich die Tücken von eval und der Debugger bringt es an den Tag: Der String, der übergeben wird, sieht so aus:
column1.push([object Object])
weil Du einen String zusammen baust und Javascript wandelt das Objekt paragraph in diese Stringdarstellung um.
Lösung:
window["column" + column].push(paragraph);
Dabei nutzt man aus, dass eine Variable ein Element des window-Objektes ist, das mit dem Variablennamen angesprochen werden kann.
Ich würde es jedoch vorziehen, auf diesen Trick zu verzichten und das Ganze in einem zweidimensionalen Array abzulegen:
var columns = [[], [], [], [], []];
var counter = 0;
console.log("gestartet");
const columnpositions = [2, 8, 22, 38, 57];
const possibilitys = [0, 1, ""];
function createElement(column) {
console.log("new Element");
counter++;
var character = possibilitys[Math.round(Math.random() * 2)];
$("#Background").append("<p id='" + counter + "'>" + character + "</p>");
var paragraph = $("#" + counter).css({ "left": columnpositions[column] + "rem" });
columns[column].push(paragraph);
}
function createRow() {
for (var i = 0; i < 5; i++) {
createElement(i);
}
window.setTimeout(createRow, 1000);
}
createRow();
Alles anzeigen