Я предлагаю вам использовать уникальный идентификатор в качестве имени для элемента формы, как показано ниже:
const trait = (id, name, dice, mod) => {
return `
<tr><form name="${id}" action="#" onsubmit="renderRoll">
<td><label>${name}</label></td>
<td><input type="text" name="dice" value="${dice}"></td>
<td><input type="text" name="mod" value="${mod}"></td>
<td><input type="submit" value="Slå" name="roll" ></td>
</form></tr>`;
};
document.getElementById('content').innerHTML += trait("form", "test", "test", "test");
И использовать данные формы при каждом запуске формы:
function renderRoll() {
let data = document.forms.namedItem("form").elements;
data = [...data].map(({name, value}) => ({name, value}));
console.log(data)
}
Надеюсьэто будет полезно.