Я пытаюсь собрать информацию от пользователя на основе 2D-массива. У меня проблемы с передачей 2D-массива из одной функции в Javascript в другую функцию в виде массива, а не в виде текста. Что я могу делать не так?
Массив такой
Title Category1 Category2 Category3
Category1 Apples Blue Eyes
Category2 Oranges Green Legs
Category3 Pairs Yellow Arms
Mango Gray
Идея состоит в том, чтобы сначала отобразить Column1
, указав "Заголовок" в виде текста и список категорий с помощью кнопок. При нажатии на кнопку должно отображаться содержимое соответствующего столбца. Поэтому, если пользователь нажимает на категорию 3, он должен видеть категорию 3 как текст, а параметры «глаза», «ноги», «руки» - как кнопки.
Моя проблема заключается в передаче onclick
правильного значения. параметры как nextStep(this,database)
не работают. Когда я передаю nextStep(this,\''+database+'\')
, конечно, он передает «базу данных» как текст, а не как массив.
Есть предложения?
My HTML - это простой div.
<div id="mainPage"></div>
My Javascript запускается при загрузке ...
window.addEventListener("load", starting, false);
function starting(){
var database = [[Title, Category1, Category2, Category3], [Category1,Apples,Blue,Eyes],[Category2,Oranges,Green,Legs],[Category3,Pairs,Yellow,Arms],[,Mango,Gray,]];
renderCategories(database,1);
}
function renderCategories(database, pos){
mainPage = document.getElementById("mainPage");
var catTitles = database[0];
var catTitle = catTitles[pos];
var allmainPage = database[2];
mainPage.innerHTML = '<div class="input-field col s12 m12"><h3>'+catTitle+'</h3></div>';
for(var i=0; i<allmainPage.length; i++){
var categoryListValue = allmainPage[i][pos];
if (categoryListValue !=""){
mainPage.innerHTML += '<div class="row"><button onclick="nextStep(this,database)" value="'+categoryListValue+'">'+categoryListValue+'</button></div>';
}
}
}
function nextStep(selection, database){
var selectedCat = selection.value;
alert(selectedCat);
var catTitles = database[0];
alert(catTitles);
}
window.addEventListener("load", starting, false);