Обновление элементов глобального массива JavaScript
Есть html-таблица с данными. Часть данных (столбец ValUnvisible) скрыта и отображается (:before.content="+")/скрывается (:before.content="-") по клику на кнопке (:before).
<table id="example">
<thead>
<tr>
<th>#</th>
<th>Name</th>
<th>ValVisible</th>
<th style="display: none;">ValUnvisible</th>
</tr>
</thead>
<tbody>
<tr id="row_1">
<td>::before
1</td>
<td>Name1</td>
<td>ValVisible1</td>
<td style="display: none;">ValUnvisible1</td>
</tr>
<tr id="row_2">
<td>::before
2</td>
<td>Name12</td>
<td>ValVisible2</td>
<td style="display: none;">ValUnvisible2</td>
</tr>
</tbody>
</table>
После открытия скрытые колонки отображаются в виде:
<table id="example">
<thead>
<tr>
<th>#</th>
<th>Name</th>
<th>ValVisible</th>
<th style="display: none;">ValUnvisible</th>
</tr>
</thead>
<tbody>
<tr id="row_1" class="parent selected">
<td>::before
1</td>
<td>Name1</td>
<td>ValVisible1</td>
<td style="display: none;">ValUnvisible1</td>
</tr>
<tr class="child" colspan="3">
<td class="child">
<table>
<tr data-row="1" data-col="4">
<td>ValUnvisible</td>
<td>
<input type="text" value="ValUnvisible1" onchange="changedata(this, 1, 4);console.log('1: ['+changedata(this, 1, 4)+']'); console.log('2: ['+editorCurr[1][4]+']');">
</td>
</tr>
</table>
</td>
</tr>
<tr id="row_2">
<td>::before
2</td>
<td>Name2</td>
<td>ValVisible2</td>
<td style="display: none;">ValUnvisible2</td>
</tr>
</tbody>
</table>
Проблема в этой функции changedata(), которая не обновляет глобальный массив данных (editorCurr). JavaScript (в html.body, перед конечным body). Перенос объявления переменной в шапку = результат аналогичен.
<script>
var editorCurr = [];
function changedata(el, rows, cols) {
console.log("input = ["+el.value+"]");
editorCurr[rows][cols] = el.value;
console.log("result["+rows+"]["+cols+"] = ["+editorCurr[rows][cols]+"]");
}
</script>
Итого:
input = [test]
result[1][4] = [undefined]
input = [test]
result[1][4] = [undefined]
1: [undefined]
2: [undefined]
Пробовал по-другому HTML:
<input type="text" value="ValUnvisible1" onchange="editorCurr[1][4]=changedata(this); console.log('1: ['+changedata(this)+']'); console.log('2: ['+editorCurr[1][4]+']');">
JavaScript:
function changedata(el) {
console.log("input = ["+el.value+"]");
return el.value;
}
Итого:
input = [test]
input = [test]
1: [test]
2: [undefined]
Хочу: editorCurr[1][4] = test